Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS, How to use GMSCoordinateBounds to show all the markers of the map?

I want to show all the markers that are on my map, after doing some searches I found that it should be done with GMSCoordinateBounds (Google Maps SDK) I've read the official documentation about it, but I have not understand how to use it and implement it in my code.

https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_camera_update#aa5b05606808272f9054c54af6830df3e

Here is my code

GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] init];    CLLocationCoordinate2D location;  for (NSDictionary *dictionary in array) {     location.latitude = [dictionary[@"latitude"] floatValue];     location.longitude = [dictionary[@"longitude"] floatValue];      // Creates a marker in the center of the map.     GMSMarker *marker = [[GMSMarker alloc] init];     marker.icon = [UIImage imageNamed:(@"marker.png")];     marker.position = CLLocationCoordinate2DMake(location.latitude, location.longitude);     bounds = [bounds includingCoordinate:marker.position];     marker.title = dictionary[@"type"];     marker.map = mapView_; }     [mapView_ animateWithCameraUpdate:[GMSCameraUpdate fitBounds:bounds withPadding:30.0f]]; 

Any help ?

like image 371
Al_fareS Avatar asked Feb 06 '14 22:02

Al_fareS


People also ask

How do I remove a marker from Google Maps on Iphone?

You can remove a marker from the map by setting the map property of the GMSMarker to nil .


1 Answers

- (void)focusMapToShowAllMarkers {      GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] init];      for (GMSMarker *marker in <An array of your markers>)         bounds = [bounds includingCoordinate:marker.position];      [<yourMap> animateWithCameraUpdate:[GMSCameraUpdate fitBounds:bounds withPadding:30.0f]];   } 

UPDATE:

are you sure there is nothing wrong in you array of markers and the coordinates? I've tried this code and is working perfectly. I've put this on the viewDidAppear

NSMutableArray *array = [[NSMutableArray alloc]initWithObjects:[[NSDictionary alloc]initWithObjectsAndKeys:@"44.66",@"latitude",@"21.33",@"longitude", nil],                          [[NSDictionary alloc]initWithObjectsAndKeys:@"44.66",@"latitude",@"21.453",@"longitude", nil],                          [[NSDictionary alloc]initWithObjectsAndKeys:@"44.44",@"latitude",@"21.993",@"longitude", nil],                          [[NSDictionary alloc]initWithObjectsAndKeys:@"44.635",@"latitude",@"21.553",@"longitude", nil],                          [[NSDictionary alloc]initWithObjectsAndKeys:@"44.3546",@"latitude",@"21.663",@"longitude", nil],                          [[NSDictionary alloc]initWithObjectsAndKeys:@"44.6643",@"latitude",@"21.212",@"longitude", nil],                          [[NSDictionary alloc]initWithObjectsAndKeys:@"44.63466",@"latitude",@"21.3523",@"longitude", nil],nil]; GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] init]; CLLocationCoordinate2D location; for (NSDictionary *dictionary in array) {     location.latitude = [dictionary[@"latitude"] floatValue];     location.longitude = [dictionary[@"longitude"] floatValue];     // Creates a marker in the center of the map.     GMSMarker *marker = [[GMSMarker alloc] init];     marker.icon = [UIImage imageNamed:(@"marker.png")];     marker.position = CLLocationCoordinate2DMake(location.latitude, location.longitude);     bounds = [bounds includingCoordinate:marker.position];     marker.title = dictionary[@"type"];     marker.map = mapView_; } [mapView_ animateWithCameraUpdate:[GMSCameraUpdate fitBounds:bounds withPadding:30.0f]]; 

This is my result:

map with markers

like image 110
allemattio Avatar answered Sep 21 '22 05:09

allemattio