我正在使用MapKit框架,我想问您一些问题:
+ (NSUInteger)zoomLevelForMapRect:(MKMapRect)mRect withMapViewSizeInPixels:(CGSize)viewSizeInPixels
{
NSUInteger zoomLevel = MAXIMUM_ZOOM; // MAXIMUM_ZOOM is 20 with MapKit
MKZoomScale zoomScale = mRect.size.width / viewSizeInPixels.width; //MKZoomScale is just a CGFloat typedef
double zoomExponent = log2(zoomScale);
zoomLevel = (NSUInteger)(MAXIMUM_ZOOM - ceil(zoomExponent));
return zoomLevel;
}
这种方法..我怎么知道
mRect
和viewSizeInPixels
参数的值能够调用它?提前谢谢:) 最佳答案
地图视图的当前MKMapRect是visibleMapRect属性,视图大小将在frame.size中(因为MKMapView是UIView的子类),因此将使用类似以下内容的方法来调用该方法:
NSUInteger zoomLevel = [UtilityClass
zoomLevelForMapRect:mapView.visibleMapRect
withMapViewSizeInPixels:mapView.frame.size];
UtilityClass
是该方法所在的任何类,并将mapView
替换为您实际映射的视图名称。顺便提一下,MapKit Framework Reference和Location Awareness Programming Guide值得一看。