Aamir - 2 months ago 22x
Swift Question

How to zoom Mapbox using Swift to a given radius in kilometers?

I recently updated from legacy Mapbox SDK (version 1.6) to latest Mapbox iOS SDK 3.x.

In new version I am not able to figure out how to zoom Mapbox MGLMapView to a given radius in kilometers to fit on screen.

In old (version 1.6)

`RMMapView.zoomWithLatitudeLongitudeBoundsSouthWest`
method does the job as following:

``````func centerAndZoom(center: CLLocationCoordinate2D, kilometers: Float) {
let meters = Double(kilometers * 1000)
let region = MKCoordinateRegionMakeWithDistance(center, meters / 2, meters / 2);

let northEastLat = center.latitude - (region.span.latitudeDelta / 2);
let northEastLon = center.longitude + (region.span.longitudeDelta / 2);
let northEast = CLLocationCoordinate2D(latitude: northEastLat, longitude: northEastLon)

let southEastLat = center.latitude + (region.span.latitudeDelta  / 2);
let southEastLon = center.longitude - (region.span.longitudeDelta / 2);
let southEast = CLLocationCoordinate2D(latitude: southEastLat, longitude: southEastLon)

self.mapView.zoomWithLatitudeLongitudeBoundsSouthWest(southEast, northEast: northEast, animated: true)
}
``````

How to achieve a radius zoom in latest Mapbox using Swift?

Now `-setVisibleCoordinateBounds:animated` will do the job:

Changes the receiverâ€™s viewport to fit the given coordinate bounds, optionally animating the change.

Mapbox iOS SDK Reference

Here is an example:

``````let bounds = MGLCoordinateBounds(
sw: CLLocationCoordinate2D(latitude: 43.7115, longitude: 10.3725),
ne: CLLocationCoordinate2D(latitude: 43.7318, longitude: 10.4222))
mapView.setVisibleCoordinateBounds(bounds, animated: false)
``````