但是,每當用戶將地圖的相機更新移動到其位置時,我的應用程序都會在用戶位置啓動。我希望它能夠加載到它們的位置,但是即使它們的位置正在移動,也可以讓它們自由瀏覽地圖。類似於Google地圖應用中顯示的行爲。我正在使用KVO來收集viewDidLoad()
函數中的位置。該行看起來是這樣的:停止地圖更新用戶位置更新 - Google Maps iOS SDK
mapView.isMyLocationEnabled = true
self.mapView.addObserver(self, forKeyPath: "myLocation", options: NSKeyValueObservingOptions.new, context: nil)
這是我的觀察功能的代碼:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
guard let update = change, let myLocation = update[NSKeyValueChangeKey.newKey] as? CLLocation else {
print("Location not found")
return
}
self.mapView.camera = GMSCameraPosition.camera(withTarget: myLocation.coordinate, zoom: 14)
}
什麼需要改變,以使其符合上述標準。
一旦獲取了myLocation的值,就可以刪除觀察者。因此,它會在地圖上定位您的位置,然後不會再像以下那樣更換攝像機:'observeValue()'方法底部的'self.mapView.removeObserver(self)'。 –
@SunilChauhan這給了我以下錯誤:**終止應用程序,由於未捕獲的異常'NSInternalInconsistencyException',原因:'類GMSMapView的實例0x101f30160被釋放,而鍵值觀察員仍然註冊它。當前觀察信息:( Context:0x0,Property:0x174054940> ) * –