Как центрировать карту в местоположении пользователя, когда приложение открывается с помощью Swift / MapKit? - PullRequest
0 голосов
/ 14 марта 2020

Я пытался центрировать карту в местоположении пользователя, когда приложение противоположно, но функция, обеспечивающая центрирование, вызывается до того, как LocationManager установит userLocation, поэтому userLocation == nill и карта центрируется по значениям по умолчанию. Итак, вот мой вопрос, как я могу вызвать функцию к центру карты только один раз (не отслеживать пользователя), когда задано userLocation?

1 Ответ

0 голосов
/ 14 марта 2020

Вам придется подождать, пока LocationManager найдет местоположение. Предполагая, что вы установили CLLocationManagerDelegate, я бы добавил реализацию следующего метода. По сути, этот метод будет вызываться при обновлении местоположения. Мы развернем первое местоположение (которое в этой точке должно быть местоположением устройства) и создадим MKCoordinateRegion с центром в местоположении устройств. Вы можете поиграть со свойством span в userLocationRegion. Последнее установите регион вашего mapView в регион, который вы создали с обновленным местоположением пользователя. (Я предполагаю, что у вас есть mapView, созданный в вашем контроллере представления)

    func locationManager (manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
         if let location = locations.first {
              // if your userLocation hasn't been set, let's set it and update the map!
              if self.userLocation == nil {
                   self.userLocation = location
                   let userLocationRegion = MKCoordinateRegion(center: location.coordinate, span: MKCoordinateSpan(latitudeDelta: 100, longitudeDelta: 100))
                  // set the region of your mapView
                  self.mapView.setRegion(MKCoordinateRegion(userLocationRegion), animated: true)
              }
         }
    }
...