这是我的代码,虽然有效,但它没有得到更新,而且不准确。我只想将相机lat和lng应用到另一个变量。
let cameraLat = self.mapView.camera.centerCoordinate.latitude
let cameraLng = self.mapView.camera.centerCoordinate.longitude
答案 0 :(得分:0)
如果您设置了mapView.delegate = self
并且已经实现了GMSMapViewDelegate
,那么每次相机更改时都很容易获得事件,因此您可以映射View视图更改。
您可以实施func mapView(mapView: GMSMapView, didChangeCameraPosition position: GMSCameraPosition)
或func mapView(mapView: GMSMapView, idleAtCameraPosition position: GMSCameraPosition)
方法。
然后像以前一样访问新的摄像机值(lat / lng),所以只需将变量重新分配给新值。
将委托添加到类
class ViewController: UIViewController, MKMapViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
...
mapView.delegate = self
}
}
只要当前显示的地图区域发生变化,就会调用此方法。在滚动期间,可以多次调用此方法以报告对地图位置的更新。因此,此方法的实现应尽可能轻量级,以避免影响滚动性能。
func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
let lat = mapView.camera.centerCoordinate.latitude
let lng = mapView.camera.centerCoordinate.longitude
}