iPhone MkMapView заблокировать центр для пользователя - PullRequest
2 голосов
/ 29 января 2010

У меня есть MkMapView, и я хочу, чтобы карта находилась по центру местоположения пользователя, точно так же, как приложение карты iPhone при нажатии кнопки области действия.

Я использую метод setCenterCoordinate, потому что мне не нужно устанавливать масштаб. Я использую его каждый раз, когда местоположение обновляется из менеджера местоположений.

Проблема заключается в том, что, поскольку он обновляется каждые полсекунды (приблизительно), этот метод "setCenterCoordinate" вызывается все время, и приложение зависает. Если мне нужно переключиться на вкладку вдали от вида карты, я должен продолжать нажимать другую вкладку, чтобы выполнить это.

Что ж, весь этот текст просто для того, чтобы спросить, есть ли правильный способ заставить MkMapView установить свой центр в соответствии с местоположением пользователя (синяя точка).

Спасибо

Ответы [ 2 ]

7 голосов
/ 08 апреля 2010

Я уже описал лучший способ получения обновлений свойства userLocation.location для MKMapView через уведомления KVO вместо использования другого менеджера местоположений. Как мне увеличить MKMapView до текущего местоположения пользователя без CLLocationManager?

Конечно, вы должны внести некоторые изменения в метод получения уведомлений KVO. Примерно так:

-(void)observeValueForKeyPath:(NSString *)keyPath  
                     ofObject:(id)object  
                       change:(NSDictionary *)change  
                      context:(void *)context {  

    if ([self.mapView isUserLocationVisible]) {  
       [self.mapView setCenterCoordinate:self.mapView.userLocation.location.coordinate
                                animated:YES];
    }
}

Я проверил этот код, и он отлично работает.

0 голосов
/ 06 января 2013

В дополнение к ответу ddnv:

Никогда не забывайте останавливать наблюдателя в методе viewWillDisappear (или viewDidUnload в

    [self.mapView.userLocation removeObserver:self forKeyPath:@"location"];

В противном случае ваше приложение будет аварийно завершено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...