MKMapKit学习总结(二)增加地图缩放功能

背景

最近使用MKMapKit地图,替换原有的高德地图sdk,遇到了没有zoomlevel属性,用于设置地图的缩放等级。

在MKMapView中对地图显示的中心和区域缩放的大小,进行设置的用的::MKCoordinateRegion 和 MKCoordinateSpan::这两个属性。

详细的说明见,这个网址,博主说的很明白计算MKMapView的zoomlevel(地图缩放等级)里面详解了地图的缩放的等级,和zoomLevel的算法解析,这里就不做多说。

博文中对,实现方式,只有swift的代码,而且只有get方法,我在oc的基础上实现了set和get方法。

下面是正经代码啦

下面是.m文件

- (void)setZoomLevel:(NSUInteger)zoomLevel
{
    [self setZoomLevel:zoomLevel animated:NO];
}

- (NSUInteger)zoomLevel
{
    return round(log2(360 * (((double)self.frame.size.width/256) / self.region.span.longitudeDelta)));
}

- (void)setZoomLevel:(NSUInteger)zoomLevel animated:(BOOL)animated
{
    
    MKCoordinateSpan span = MKCoordinateSpanMake(0,
                                                 360 / pow(2, (double)zoomLevel) * (double)self.frame.size.width / 256);
    [self setRegion:(MKCoordinateRegionMake(self.centerCoordinate, span)) animated:animated];
}

下面是.h文件

@property (nonatomic) NSUInteger zoomLevel;

// 缩放级别3-20
- (void)setZoomLevel:(NSUInteger)zoomLevel animated:(BOOL)animated;

你可能感兴趣的:(MKMapKit学习总结(二)增加地图缩放功能)