iOS: 如何知道GMSMapView的缩放级别
iOS: How to know zoom level of GMSMapView
您好,我想获取 Google Map view
的当前缩放级别,就像要检查的条件一样。
例如,
if(mapView.zoom==18.0)
{
//code goes here..
}
如何获得?
您可以使用下面的代码。
#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;
这很容易。 GMSMapView 有一个相机 (GMSCameraPosition) 属性,它有一个缩放 属性。
CGFloat zoom = mapView.camera.zoom;
请注意缩放 属性 是只读的。
您好,我想获取 Google Map view
的当前缩放级别,就像要检查的条件一样。
例如,
if(mapView.zoom==18.0)
{
//code goes here..
}
如何获得?
您可以使用下面的代码。
#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;
这很容易。 GMSMapView 有一个相机 (GMSCameraPosition) 属性,它有一个缩放 属性。
CGFloat zoom = mapView.camera.zoom;
请注意缩放 属性 是只读的。