iphone – MKMapView缩放和地区

我熟悉使用Google Maps Javascript API。最近我开始为iPhone项目使用MapKit框架,但我很难在地图上找出缩放和设置区域。

在Google Maps API中,我常常使用整数缩放级别(如8,9,10)以及简单的函数setZoom()。我在MapKit框架中可以看到的唯一等效方法是setRegion:animated。据我所知,我需要设置一个区域的跨度的纬度和经度“delta”值来指定缩放级别。但我真的不知道这些值代表什么(我阅读文档)。

当我使用MKMapView委托并跟踪regionDidChange中的span值时,委托方法的结果似乎没有相互关联。当我缩小并看到span delta值在文档中指定的增加时,它是确定的。但是突然我拖动地图而不缩放,增量值变为0.0。

可以有人请解释什么是这些跨度和三角洲的参考点?或者有任何算法来将整数缩放级别(如9)转换为这些增量值?

作为一个额外的问题是有什么方法来指定最小最大缩放级别在MKMapView 🙂

谢谢

首先,MKMapView不使用/有一个预定义的缩放级别,如谷歌地图。

相反,MKMapView的可见区域使用MKCoordinateRegion来描述,MKCoordinateRegion由两个值组成:

>中心(区域的中心点),和
> span(中心周围的可见区域的大小)。

中心点应该是明显的(它是区域的中心点)。

但是,span(这是一个MKCoordinateSpan)包括:

> latitudeDelta(由区域表示的垂直距离),和
> longitudeDelta(由区域表示的水平距离)。

一个简单的例子。这里有一个玩具MKCoordinateRegion:

>中心:

> latitude:0
>经度:0

> span:

> latitudeDelta:8
> longitudeDelta:6

该区域可以使用其最小和最大坐标来描述如下:

>最小坐标(左下角):

>纬度:-4
>经度:-3

>最大坐标(右上角):

>纬度:4
>经度:3

因此,您可以使用适当大小的MKCoordinateSpan指定中心点周围的缩放级别。作为Google数字缩放级别的近似值,您可以对Google针对给定缩放级别使用的跨度大小进行反向工程,并相应地创建跨度。 (Google以与MKMapView相同的方式描述其视图区域作为中心跨度,因此您可以将这些值从Google地图中提取出来。)

至于限制区域,你可以玩w /这个委托方法:

mapView:regionWillChangeAnimated

例如通过将区域调整为允许的缩放级别。 (种类似桌子视图将如何让你滚过边缘,但会橡皮筋回到位。)然而,你的里程可能会有所不同,因为我没有使用它为这个目的。

btw,有明确的修复/改进OS 3.1到MapKit的方面,给我在3.0的麻烦。

http://stackoverflow.com/questions/1166444/mkmapview-zoom-and-region

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:iphone – MKMapView缩放和地区