Я пытаюсь показать текущее местоположение пользователя, установив свойство MKMapView
i.e setShowsUserLocation
- YES
. По умолчанию стрелка появляется в верхнем левом углу экрана iPhone, когда приложение начинает обновлять местоположение пользователя. Но после отображения текущего местоположения стрелка должна исчезнуть, но ее все еще присутствует, пока приложение запущено, что означает, что приложение все еще остается обновление местоположения в фоновом режиме? так как я могу остановить обновление текущего местоположения? я реализовал делегат, который будет вызываться немедленно ..Показать текущее местоположение пользователя с помощью MKMapView?
ответ
Если карта видна и имеет showUserLocation установлен на YES, она продолжает обновляться в фоновом режиме.
Вам нужно отменить это, когда представление исчезнет или когда приложение перейдет на задний план. Лучшим способом, вероятно, было бы зарегистрировать ваш viewController для получения уведомлений для UIApplicationDidEnterBackgroundNotification
и UIApplicationDidBecomeActiveNotification
.
- (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];
}
Тогда в методе, называемом этим уведомлением, изменить свойства отображения карты относительно userLocation
:
- (void)appToBackground{
[mapview setShowsUserLocation:NO];
}
И
- (void)appReturnsActive{
[mapview setShowsUserLocation:YES];
}
Убедитесь, что эти методы действительно вызывается установив точку останова там и вернуться на главный экран.
Вы можете остановить обновление местоположения, отправив сообщение для менеджера данного адреса [self.locationManager stopUpdatingLocation];
Что касается вашего случая, вы пытались прекратить показ местоположения пользователей?
Я не использую никакого менеджера местоположений .. если я его остановил, он тоже скрывает аннотацию (местоположение) – hemant
Попробуйте внедрить 'CLLocationManagerDelegate', у вас будет лучший способ контролировать CoreLocation Framework. Вы можете найти хороший начальный учебник здесь: http://www.switchonthecode.com/tutorials/getting-your-location-in-an-iphone-application –
Я согласен с Майклом Кернаханом, я уверен, что есть состояние гонки внутри MKMapView
.
MKMapView
пытается удалить userLocationAnnotation
(голубая точка) самостоятельно, как только он осознает, что потерял доступ к службам определения местоположения.
Однако, это не кажется, защищен, и если разработчик также выдает [mapView setShowsUserLocation:NO]
, весьма вероятно, чтобы получить крах из-за гонки между внутренней резьбой MKMapView
«s пытается удалить userLocationAnnotation
, и поток, который звонит setShowsUserLocation:NO
.
Согласовано. Это, похоже, проблема в iOS 7.x, в частности. Я не думаю, что я еще не видел его на 8.x. – Kevin
- 1. показывает текущее местоположение MKMapView
- 2. как показать текущее местоположение на MKMapView
- 3. Как найти текущее местоположение пользователя в mkmapview
- 4. Показать текущее местоположение пользователя на карте
- 5. ios - MKMapView не показывать текущее местоположение
- 6. Вручную показать текущее местоположение синяя точка MKMapView ios
- 7. Как сосредоточить свое текущее местоположение в MKMapView?
- 8. MapKit увеличить текущее местоположение пользователя
- 9. Получить местоположение пользователя из MKMapView
- 10. Как показать текущее местоположение пользователя - GPS
- 11. Получить текущее местоположение пользователя с помощью GPS
- 12. MKMapView изменить текущее местоположение blimp цвет
- 13. Получить текущее местоположение пользователя
- 14. Positing текущее местоположение пользователя
- 15. Текущее местоположение пользователя?
- 16. Не обновлять текущее местоположение в MKMapView
- 17. Показать текущее местоположение без вывода
- 18. Текущее местоположение Проблема с использованием MKMapView в iPhone?
- 19. Показать текущее местоположение без использования CLLocationManager
- 20. Показать местоположение пользователя в MapView
- 21. select2: Проверить текущее местоположение пользователя
- 22. Watchkit Maps: показать текущее местоположение
- 23. Как показать местоположение текущего пользователя на тренажере
- 24. Как увеличить текущее местоположение пользователя?
- 25. Текущее местоположение пользователя не загружается
- 26. показывает местоположение и направление пользователя в ios, используя mkmapview
- 27. Как получить текущее местоположение пользователя
- 28. Получить текущее местоположение пользователя android
- 29. Текущее местоположение пользователя на mapkit в xcode
- 30. MKMapView и лучший способ увеличить местоположение пользователя
Я использовал этот метод, но я получаю то, что по-видимому, является сбоем гонки при входе в фоновый режим: '[MKMapView (UserPositioning) stopUpdatingUserLocation]' calls' [MKMapView (UserPositioningInternal) removeUserLocation] ', который взрывается с помощью SIGSEGV. Не думайте, что вы уже видели/решили это? –
нужно удалить наблюдателя, когда 'viewDidUnload'? – Raptor
@MichaelKernahan У меня такая же проблема. Вы когда-нибудь находили решение? – horsejockey