如何在地图缩放或滚动动画完成后收到通知?

时间:2014-07-30 07:31:16

标签: ios xcode mapkit

非常 iOS编程的新手,并且道歉,这个问题听起来相当微不足道。但在网上搜索了几个小时之后,我已经放弃了。

我需要在我的iOS应用中获取地图的当前缩放级别,这样当我更改当前视图时,我可以保留缩放级别。使用this code,我可以获取并设置缩放级别。我实现了mapView:regionDidChangeAnimated:协议的MKMapViewDelegate方法。但是这个方法在初始"放大"期间被多次调用。地图的动画,如果在此期间,我需要更新地图,我可能有错误的缩放级别。我当然不想关闭地图动画。因此,在阅读和存储缩放级别之前,我一直在寻找一种方法来确定地图当前是动画还是静止。

我正在使用MKMapView

1 个答案:

答案 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