移动mapview相机时更新lat和long?

时间:2016-12-05 12:50:16

标签: ios swift mkmapview

这是我的代码,虽然有效,但它没有得到更新,而且不准确。我只想将相机lat和lng应用到另一个变量。

let cameraLat = self.mapView.camera.centerCoordinate.latitude
let cameraLng = self.mapView.camera.centerCoordinate.longitude

1 个答案:

答案 0 :(得分:0)

用于谷歌地图:

如果您设置了mapView.delegate = self并且已经实现了GMSMapViewDelegate,那么每次相机更改时都很容易获得事件,因此您可以映射View视图更改。

您可以实施func mapView(mapView: GMSMapView, didChangeCameraPosition position: GMSCameraPosition)func mapView(mapView: GMSMapView, idleAtCameraPosition position: GMSCameraPosition)方法。

然后像以前一样访问新的摄像机值(lat / lng),所以只需将变量重新分配给新值。

或MapKit:

将委托添加到类

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
}