背景
最近使用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;
网友评论