У меня есть вид google maps, встроенный в контроллер TabBar, и это второй элемент на вкладке. Вид загружает карту, но не отображает текущее местоположение или кнопку определения местоположения. Я уже отредактировал схему, чтобы указать место для используемой сборки.Карты Google, не отображающие текущее местоположение или локализацию
var locationManager = CLLocationManager()
var didFindMyLocation = false
override func viewDidLoad() {
super.viewDidLoad()
var camera = GMSCameraPosition.cameraWithLatitude(33.7,
longitude: -77.4, zoom: 8.0)
mapView.camera = camera
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
mapView.addObserver(self, forKeyPath: "myLocation", options: NSKeyValueObservingOptions.New, context: nil)
// Do any additional setup after loading the view.
}
func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == CLAuthorizationStatus.AuthorizedWhenInUse {
mapView.myLocationEnabled = true
}
}
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
if !didFindMyLocation {
let myLocation: CLLocation = change[NSKeyValueChangeNewKey] as! CLLocation
mapView.camera = GMSCameraPosition.cameraWithTarget(myLocation.coordinate, zoom: 10.0)
mapView.settings.myLocationButton = true
didFindMyLocation = true
}
}
Как я могу получить местоположение пользователя с этого момента? Я реализовал то, что у вас было выше в viewdidload и добавил: mapView.camera = GMSCameraPosition.cameraWithTarget (mapView.myLocation.coordinate, zoom: 10.0) в блоке оператора if, но программа вылетает из-за того, что mapView.myLocation.coordinate равен нулю. – wxcoder
@wxcoder вид карты извлекает текущий асинхронно из основного местоположения, когда он доступен, поэтому он будет недоступен немедленно. С тем, что у вас есть в вашем исходном примере, местоположение будет восстановлено для обновления камеры в watchValueForKeyPath, и все должно быть хорошо. – makeshiftJake