我非常 iOS编程的新手,并且道歉,这个问题听起来相当微不足道。但在网上搜索了几个小时之后,我已经放弃了。
我需要在我的iOS应用中获取地图的当前缩放级别,这样当我更改当前视图时,我可以保留缩放级别。使用this code,我可以获取并设置缩放级别。我实现了mapView:regionDidChangeAnimated:
协议的MKMapViewDelegate
方法。但是这个方法在初始"放大"期间被多次调用。地图的动画,如果在此期间,我需要更新地图,我可能有错误的缩放级别。我当然不想关闭地图动画。因此,在阅读和存储缩放级别之前,我一直在寻找一种方法来确定地图当前是动画还是静止。
我正在使用MKMapView
。
答案 0 :(得分:0)
您可以尝试以下代码
#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