2015-02-04 10 views

ответ

1

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

#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 проверить document для получения дополнительной информации.

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

Существует также сторонний класс, доступный https://github.com/warmshowers/warmshowers-iphone-app/blob/master/Classes/MKMapView%2BZoomLevel.m –

+0

Код содержит все о MKMapView! Это также работает в Google Map View? Интересно. – iOSNoob

+1

Для карты Google вы можете использовать GMSCameraPosition, чтобы получить уровень масштабирования. Посмотрите на https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_camera_position –

18

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

CGFloat zoom = mapView.camera.zoom; 

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

+0

Это должен быть правильный ответ – iOSAppGuy

 Смежные вопросы

  • Нет связанных вопросов^_^