iOS: как узнать уровень масштабирования GMSMapView

Здравствуйте, я хочу получить текущий уровень масштабирования Google Map viewвроде бы в состоянии проверить. Например,

if(mapView.zoom==18.0)
{
 //code goes here..
}

Как это получить?

2 ответа

Решение

Вы можете использовать приведенный ниже код.

#define MERCATOR_RADIUS 85445659.44705395
#define MAX_GOOGLE_LEVELS 20

@interface MKMapView (ZoomLevel)
- (double)getZoomLevel;
@end

@implementation MKMapView (ZoomLevel)

- (double)getZoomLevel
{
    CLLocationDegrees longitudeDelta = self.region.span.longitudeDelta;
    CGFloat mapWidthInPixels = self.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;
}

@end

Также можно использовать контрольный документ MKCoordinateSpan для получения дополнительной информации.

typedef struct {
    CLLocationDegrees latitudeDelta;
    CLLocationDegrees longitudeDelta;
} MKCoordinateSpan;

Это довольно легко. GMSMapView имеет свойство камеры ( GMSCameraPosition), которое имеет свойство масштабирования.

CGFloat zoom = mapView.camera.zoom;

Обратите внимание, что свойство zoom доступно только для чтения.

Другие вопросы по тегам