ユーザーの場所でアプリが起動しますが、ユーザーが地図のカメラの更新をその場所に移動するたびに起動します。私はそれを自分の場所にロードしたいが、その場所が動いていても自由に地図をブラウズできるようにする。 Googleマップアプリに表示される動作と同様です。私はviewDidLoad()
機能内の場所を収集するためにKVOを使用しています。その行は次のようになります。地図を停止するユーザーの場所の更新を更新する - 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は、キー値オブザーバーがまだ登録されている間に割り当て解除されました。現在の観測情報:( コンテキスト:0x0、プロパティ:0x174054940> ) '* * –