背景
最近使用MKMapKit地圖秀又,替換原有的高德地圖sdk,遇到了沒有zoomlevel屬性猎荠,用于設置地圖的縮放等級伊磺。
在MKMapView中對地圖顯示的中心和區(qū)域縮放的大小,進行設置的用的::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;