2015-01-16 2 views
1

У меня возникли проблемы с видом карты в моем приложении. Я создал кнопку, которая при щелчке должна показывать местоположение пользователей на карте, но ничего не происходит (сообщений об ошибках не возникает).showsUserLocation действие, прикрепленное к кнопке не работает

Я считаю, что проблема может заключаться в том, как я написал делегатов. Код из соответствующих .h и .m файлов ниже:

mapViewController.h

#import <UIKit/UIKit.h> 
#import <MapKit/MapKit.h> 
#import <CoreLocation/CoreLocation.h> 
@interface mapViewController : UIViewController { 
MKMapView *mapview; 
} 
@property (nonatomic, retain) IBOutlet MKMapView *mapview; 
-(IBAction)setMap:(id)sender; 
-(IBAction)getCurrentLocation:(id)sender; 
@property (nonatomic, retain) IBOutlet CLLocationManager *locationManager; 
@end 

mapViewController.m

#import "mapViewController.h" 
@interface mapViewController() 
@end 
@implementation mapViewController { 
CLLocationManager *locationManager; 
} 
@synthesize mapview; 
- (void)viewDidLoad { 
[super viewDidLoad]; 
// Do any additional setup after loading the view. 
self.locationManager.delegate=self; 
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
self.locationManager.requestWhenInUseAuthorization; 
} 
- (void)didReceiveMemoryWarning { 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 
-(IBAction)setMap:(id)sender { 
switch (((UISegmentedControl *) sender).selectedSegmentIndex) { 
case 0: 
    mapview.mapType = MKMapTypeStandard; 
    break; 
case 1: 
    mapview.mapType = MKMapTypeSatellite; 
    break; 
case 2: 
    mapview.mapType = MKMapTypeHybrid; 
    break; 
    default: 
    break; 
} 
} 
-(IBAction)getCurrentLocation:(id)sender { 
mapview.showsUserLocation = YES; 
} 
@end 

Любая помощь будет принята с благодарностью, спасибо

+0

Что вы ожидаете? Как действие связано с кнопкой в ​​Interface Builder? – quellish

+0

Как уже упоминалось выше, при нажатии кнопки он должен показывать местоположение пользователя на карте. У меня есть отправленное событие (касание внутри), связанное с кнопкой, которая ссылается на getCurrentLocation. – KGNZ

+0

. Ваш вопрос по-прежнему не ясен, однако из документации: «Это свойство не указывает, действительно ли позиция пользователя видна на карте, только если представление карты должно попытаться отобразить его ». , В дополнение к настройке этого свойства на YES вы также должны установить центральную координату и (возможно) масштабирование, чтобы получить поведение, которое я делаю, вы ищете. – quellish

ответ

0

Вы должны реализовать делегаты MapKit. (Убедитесь, что вы добавить делегата подписи в .h вашего контроллера представления)

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { 
    MKCoordinateRegion region; 
    MKCoordinateSpan span; 
    span.latitudeDelta = 0.005; 
    span.longitudeDelta = 0.005; 
    CLLocationCoordinate2D location; 
    location.latitude = userLocation.coordinate.latitude; 
    location.longitude = userLocation.coordinate.longitude; 
    region.span = span; 
    region.center = location; 
    [mapView setRegion:region animated:YES]; 
} 

Extra: Для обработки приложение на передний план или нет:

Добавляем 2 наблюдателей событий, чтобы наблюдать Приложение вводит фоновый/возвращаемый актив:

- (void)viewDidLoad{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appToBackground) name:UIApplicationDidEnterBackgroundNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appReturnsActive) name:UIApplicationDidBecomeActiveNotification object:nil]; 
} 

- (void)appToBackground{ 
    [mapview setShowsUserLocation:NO]; 
} 

- (void)appReturnsActive{ 
    [mapview setShowsUserLocation:YES]; 
} 
Смежные вопросы