mkmapview showsUserLocation

Эй, есть вопрос здесь. Я пытаюсь сделать.

if (Map.showsUserLocation == YES) 
        {
            Map.showsUserLocation = NO;
        }

Это довольно просто. Когда приложение только началось showsUserLocation установлено на ДА, но устройству требуется время, чтобы найти местоположение. Так что, если пользователь нажмет showsUserLocation = NO до того, как местоположение было найдено (до появления синей точки). EXC_BAD_ACCESS.

В Google Map, он имеет защитный код, прежде чем Google Map появится синяя точка, он не даст вам нажать showsUserLocation Кнопка путем отображения ActivityIndicator. есть идеи как это сделать? Заранее спасибо.

2 ответа

Решение

MKMapViewDelegate имеет метод:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation

Здесь вы можете включить кнопку, пока она не будет отключена.

Вы можете сделать довольно комфортно. Отключите кнопку "currentLocation", пока mapView не получит текущее местоположение пользователя, а затем кнопку "currentLocation", когда получите текущее местоположение пользователя. Это можно сделать, отключив кнопку "currentLocation" в viewDidLoad/ViewDidAppear и включив кнопку "currentLocation" в -(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation: метод после [mapView.userLocation setTitle:@"I am here"];, Это будет работать для вас.

Другие вопросы по тегам