我正在使用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;
}


这种方法..我怎么知道mRectviewSizeInPixels参数的值能够调用它?提前谢谢:)

最佳答案

地图视图的当前MKMapRect是visibleMapRect属性,视图大小将在frame.size中(因为MKMapView是UIView的子类),因此将使用类似以下内容的方法来调用该方法:

NSUInteger zoomLevel = [UtilityClass
                           zoomLevelForMapRect:mapView.visibleMapRect
                           withMapViewSizeInPixels:mapView.frame.size];


UtilityClass是该方法所在的任何类,并将mapView替换为您实际映射的视图名称。

顺便提一下,MapKit Framework ReferenceLocation Awareness Programming Guide值得一看。

10-08 05:55