GMSMapView - 当地图从滚动结束时如何获得回调

Vla*_*dan 4 iphone ios google-maps-sdk-ios

当它停止移动时,我需要从GMSMapView获得回调.

我已经阅读了文档,我发现了"mapView:idleAtCameraPosition:"方法,但它并不是我想要的.这种方法过于频繁地调用,而不仅仅是在mapView结束移动时.

任何的想法?

mit*_*ade 11

添加布尔值以跟踪地图是否已开始被拖动.然后在mapView:willMove:将其设置为true.在idleAtCameraPosition中,仅在此变量为true时才更新:

func mapView(mapView: GMSMapView!, idleAtCameraPosition position: GMSCameraPosition!) {
    if locationDragged == true {
        locationDragged = false
        println("changed position: \(mapView.camera.target)")
        // do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)


Sax*_*uce 0

您也许可以将相机的位置记录在mapView:idleAtCameraPosition:. 然后在下一次调用时,如果位置没有改变,则忽略该调用。如果位置发生了变化,那么您就知道地图已移动并再次停止,因此您可以进行所需的任何处理 - 并将新位置再次存储在成员中。