How to fit bounds for coordinate array with google maps sdk for iOS?

Mecid picture Mecid · Feb 28, 2013 · Viewed 23k times · Source

How to fit bounds for coordinate array with google maps sdk for iOS? I need to zoom map for 4 visible markers.

Answer

Lirik picture Lirik · Jul 15, 2013

Here's my solution for this problem. Building a GMSCoordinateBounds object by multiple coordinates.

- (void)focusMapToShowAllMarkers
{       
    CLLocationCoordinate2D myLocation = ((GMSMarker *)_markers.firstObject).position;
    GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:myLocation coordinate:myLocation];

    for (GMSMarker *marker in _markers)
        bounds = [bounds includingCoordinate:marker.position];

    [_mapView animateWithCameraUpdate:[GMSCameraUpdate fitBounds:bounds withPadding:15.0f]];
}

Updated answer: Since GMSMapView markers property is deprecated, you should save all markers in your own array.

updated swift 3 answer:

    func focusMapToShowAllMarkers() {
        let firstLocation = (markers.first as GMSMarker).position
        var bounds = GMSCoordinateBoundsWithCoordinate(firstLocation, coordinate: firstLocation)

        for marker in markers {
            bounds = bounds.includingCoordinate(marker.position)
        }
        let update = GMSCameraUpdate.fitBounds(bounds, withPadding: CGFloat(15))
        self.mapView.animate(cameraUpdate: update)
  }