yandex / mapkit-ios-demo

MapKit iOS demo
Other
84 stars 27 forks source link

User location #238

Closed McFamous closed 4 months ago

McFamous commented 5 months ago

При первом ините экрана, мне нужно отцентрировать камеру на пользовательской локации. Я нахожу эту точку с помощью: let userLocation = YMKLocationManager.lastKnownLocation()?.position Но в случае, когда userlocation = nil, все равно на карте есть метка пользователя. Откуда берутся его координаты? Доступ к геопозиции разрешен

В каких случаях YMKLocationManager.lastKnownLocation()?.position = nil, кроме того случая, когда нет доступа к геопозиции пользователя?

YandexMapKit commented 4 months ago

Пожалуйста, пришлите нам минимальный пример вашей ситуации. Вы можете выложить его проектом на GitHub, прикрепить к переписке в архиве или загрузить на Яндекс Диск и указать ссылку.

McFamous commented 4 months ago

@YandexMapKit Для визуализации данного кейса, можно воспользоваться UserLocationViewController.swift и в метод viewDidLoad() добавить следующий код:

        guard let userLocation = YMKLocationManager.lastKnownLocation()?.position else {
            let alert = UIAlertController(title: nil, message: "Ошибка получения данных локации", preferredStyle: .alert)
            alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
            self.present(alert, animated: true, completion: nil)
            return
        }

Для большей наглядности ниже предоставлен скриншот, куда добавлен данный код: image

Как тестировать на симуляторе:

  1. В настройках симулятора Features -> Location -> Custom Location -> ввести свою локацию
  2. Открыть UserLocationViewController и дать разрешение на использование геолокации пользователя
  3. Выйти из UserLocationViewController
  4. В настройках симулятора Features -> Location выбрать None И при следующем открытии UserLocationViewController вы увидите метку пользователя на карте, а также диалог об ошибке получения данных локации. Откуда берется метка на карте, если данные о локации пользователя отсутствуют?
YandexMapKit commented 4 months ago

Если локация не известна, iOS возвращает последнюю известную локацию. Это особенность работы MapKit под iOS.