Показать текущее местоположение пользователя с помощью MKMapView?

Я пытаюсь показать текущее местоположение пользователя, установив свойство MKMapView т.е. setShowsUserLocation в YES . По умолчанию стрелка появляется в верхнем левом углу экрана iPhone, когда приложение начинает обновлять местоположение пользователя. Но после отображения текущего местоположения стрелка должна исчезнуть, но ее все еще присутствует, пока приложение запущено, что означает, что приложение все еще остается обновление местоположения в фоновом режиме? так как я могу остановить обновление текущего местоположения? Я внедрил делегата, который немедленно вызван.

3 Solutions collect form web for “Показать текущее местоположение пользователя с помощью 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]; } 

Убедитесь, что эти методы действительно вызываются путем установки там точки останова и возвращения на главный экран.

Я согласен с Майклом Кернаханом, я уверен, что в MKMapView есть состояние MKMapView .

MKMapView похоже, пытается самостоятельно удалить userLocationAnnotation (синюю точку), как только он осознает, что потерял доступ к службам определения местоположения.

Тем не менее, это не кажется защищенным, и если разработчик также выдает [mapView setShowsUserLocation:NO] , он, скорее всего, MKMapView крах из-за гонки между внутренним потоком userLocationAnnotation , пытающейся удалить userLocationAnnotation , и поток, который вызов setShowsUserLocation:NO .

Вы можете остановить обновление местоположения, отправив сообщение менеджеру местоположения [self.locationManager stopUpdatingLocation];

Что касается вашего случая, пытались ли вы перестать показывать местоположение пользователей?

  • Добавить другой цвет контактов с MapKit в swift 2.1
  • MKCoordinateSpanMake: зачем указывать долготу и широту?
  • Индивидуальные контакты iOS MapKit
  • Ошибка приложения при аннотации MapKit
  • Центрирование MKMapView на месте N-пикселей ниже булавки
  • Открытие собственных карт google в Xcode
  • Фильтрация / заказ MKLocalSearch ответ
  • привязать к дороге для карт яблони
  • Бесплатный компонент отображения для IOS
  • Рассчитать ETA в Свифте
  • Рисование MKMapView Overlay, как Google Maps Directions
  • Interesting Posts

    Получить ссылку на NSLayoutConstraint с помощью набора идентификаторов в раскадровке

    AFNetworking 2.0 setImageWithURLRequest

    XMPP iOS Framework обнаруживает проблему отключения интернета с сервером OpenFire

    Выделение ячеек в CollectionView

    Гетерогенный литерал коллекции может быть выведен только в «»; добавьте явное аннотацию типа, если это преднамеренное

    Как мне разрешить повторный заказ для UITableViewController?

    Создание частных репозиториев cocoapods за пределами github

    Создание растрового изображения iOS – простой пример

    Есть ли пользовательский интерфейс для iOS, как Monkey на Android?

    Что означает это предупреждение: «установка первого представления ответчика в виде коллекции, но мы не знаем его тип (cell / header / footer)»

    Как обмениваться текстовыми / URL-адресами на linkedin через приложение iPhone?

    Как добавить несколько UIBarButtonItems с правой стороны панели навигации?

    Использование неразрешенного идентификатора «FIRAuth» (Swift 2, Firebase 3.x)

    Как выполнить базовую реализацию делегирования в Swift?

    Анализ данных в структуре

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.