Is there a Google Map event listener for panning or zooming map?

痞子三分冷 提交于 2019-12-04 01:41:04

I use this delegate to detect the camera change, which includes zoom and position:

- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position;

EDIT

with this code you can get the corners of the visibile area:

NSLog(@"%f,%f",_mapView.projection.visibleRegion.farLeft.latitude,_mapView.projection.visibleRegion.farLeft.longitude);//north west
NSLog(@"%f,%f",_mapView.projection.visibleRegion.farRight.latitude,_mapView.projection.visibleRegion.farRight.longitude);//north east
NSLog(@"%f,%f",_mapView.projection.visibleRegion.nearLeft.latitude,_mapView.projection.visibleRegion.nearLeft.longitude);//south west
NSLog(@"%f,%f",_mapView.projection.visibleRegion.nearRight.latitude,_mapView.projection.visibleRegion.nearRight.longitude);//south east

Try delegate method - (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture, the BOOL parameter tells you that the mapView is moved by user or not.

To detect end of moving/zooming Google Map view :

I came across this question while seeking for how to detect if google map ended up with moving/zooming to get map's centre. I tried capture this event in didChangeCameraPosition as suggested by Allemattio, but that is getting called multiple time as we pan or zoom map. Luckily I found another delegate method of map view that is called when we ended up with panning or zooming map view :

-(void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position
{
      NSLog(@"mapView ended with panning/zooming in %s",__PRETTY_FUNCTION__);
}

Swift

extension MyMapViewController:GMSMapViewDelegate {

    func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) {
        //do something
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!