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

Chris picture Chris · Feb 7, 2014 · Viewed 7.6k times · Source

I want to be able to detect if the user has zoomed out or moved the map center. I have seen post about an event listener but in Javascript and I am trying to see if there is anything in the Google Maps iOS SDK similar to that. I see that iPad Yelp app has something like that, where if you zoom in/out or move the map a Tool Bar appears from the bottom and lets the user know if they want to "Redo Search In Area". I want to do something similar like that and reload the map with other/more markers.

I have looked at Google Map's Reference guide but have not found anything, unfortunately. If anyone has had something similar to this or has any guidance on how this can be accomplished, any information would be great. Thanks in advance!

Link to Google Map Documentation I have looked at:

https://developers.google.com/maps/documentation/ios/reference/protocol_g_m_s_map_view_delegate-p

https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_coordinate_bounds

Answer

allemattio picture allemattio · Feb 7, 2014

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