2

How can I calculate the current zoomScale for an MKMapView?

Bryan Clark
  • 203
  • 1
  • 2
  • 10

1 Answers1

0

Use the following code:

#define MERCATOR_RADIUS 85445659.44705395
#define MAX_GOOGLE_LEVELS 20

- (double)getZoomLevel {
    CLLocationDegrees longitudeDelta = self.mapView.region.span.longitudeDelta;
    CGFloat mapWidthInPixels = self.mapView.bounds.size.width;
    double zoomScale = longitudeDelta * MERCATOR_RADIUS * M_PI / (180.0 * mapWidthInPixels);
    double zoomer = MAX_GOOGLE_LEVELS - log2( zoomScale );
    if ( zoomer < 0 ) zoomer = 0;
    //  zoomer = round(zoomer);
    return zoomer;
}

The return value of the getZoomLevel method will be the current zoom level of your mapView property.

Sujith Thankachan
  • 3,508
  • 2
  • 20
  • 25