Я пытаюсь установить начальное местоположение на карте в координату, которую я получаю из профиля пользователя, хранящегося в базе данных, например userLocation. Я звоню GMSCameraPosition
в viewDidLoad
, но заметил, что симулятор обнаруживает текущее местоположение и центрирует карту на нем, а не местоположение, которое я пытаюсь установить. Я вижу карту, расположенную на userLocation
, но сразу перемещается в текущее местоположение.Как установить начальное местоположение карты в Swift?
Я даже звоню stopUpdatingLocation
метод, но не удался.
stopUpdatingLocation
обновление местоположения звонков раз перед остановкой? Это то, что мне показалось, когда я отслеживал использование контрольных точек!
И делает ли GMSCameraPosition
также изменение подстилающих координат или просто фокусировку в заданной координате?
Ниже приведен код.
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
locationManager.distanceFilter = 50
locationManager.requestWhenInUseAuthorization()
mapView.delegate = self
if userLocation != nil {
mapView.myLocationEnabled = false
locationManager.stopUpdatingLocation()
mapView.camera = GMSCameraPosition(target: selectedCoordinate!.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
}
}
extension MapViewController: CLLocationManagerDelegate {
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == .AuthorizedWhenInUse {
locationManager.startUpdatingLocation()
mapView.myLocationEnabled = true
mapView.settings.myLocationButton = true
}
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = locations.first {
mapView.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
locationManager.stopUpdatingLocation()
}
}
}
extension MapViewController: GMSMapViewDelegate {
func mapView(mapView: GMSMapView, idleAtCameraPosition position: GMSCameraPosition) {
reverseGeocodeCoordinate(position.target)
}
}
Благодаря
Спасибо. Я использовал флаг для достижения того же, но ваш ответ чище. – ashishn
Я столкнулся с другой проблемой. карта случайно открывается <+ 51.17889992, -1.82639994> координаты. Ниже приведены некоторые операторы печати выход MapViewCoontroller - idleAtCameraPosition - Местоположение: CLLocationCoordinate2D (широта: +51,17889991879489, долгота: -1,8263999372720716) MapViewCoontroller - didUpdateLocations - Место выбрано: Необязательно (<+ +51,17889992, -1.82639994> MapViewCoontroller - didUpdateLocations - Место выбрано : Необязательно (<+ 51.17889992, -1.82639994> – ashishn
нет они <+ 18.49655889, + 73.81614894> – ashishn