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"];
, Это будет работать для вас.