coc*_*her 85 iphone cocoa-touch zoom mapkit
我熟悉使用Google Maps Javascript API.最近我开始使用MapKit框架进行iphone项目,但我很难找到缩放并在地图上设置区域.
在谷歌地图API中,我曾经使用整数缩放级别,如8,9,10,以及简单的函数setZoom().我在MapKit框架中看到的唯一等价方法是setRegion:animated.据我了解,我需要设置区域的跨度的纬度和经度"delta"值来指定缩放级别.但我真的不知道这些值代表什么(我阅读文档).
当我使用MKMapView委托并跟踪regionDidChange中的span值时,委托方法结果似乎彼此不相关.当我缩小并查看文档中指定的跨度增量值正在增加时,这没关系.但突然我拖动地图而没有缩放,delta值变为0.0.
有人可以解释一下这些跨度和三角洲的参考点是什么?或者是否有任何算法将整数缩放级别(如9)转换为这些delta值?
作为一个额外的问题是有任何方法来指定MKMapView上的最小 - 最大缩放级别:)
谢谢
小智 134
首先,MKMapView没有像谷歌地图那样使用/拥有一组预定义的缩放级别.
相反,MKMapView的可见区域是使用MKCoordinateRegion描述的,它由两个值组成:
中心点应该是显而易见的(它是该区域的中心点.)
但是,span(这是一个MKCoordinateSpan)包括:
一个简短的例子.这是一个玩具MKCoordinateRegion:
可以使用其最小和最大坐标来描述该区域,如下所示:
因此,您可以使用适当大小的MKCoordinateSpan指定中心点周围的缩放级别.作为Google数字缩放级别的近似值,您可以对Google针对给定缩放级别使用的跨度大小进行反向工程,并相应地创建跨度.(Google以与MKMapView相同的方式描述了他们的视图区域,作为中心+跨度,因此您可以将这些值从Google地图中提取出来.)
至于限制区域,你可以玩这个委托方法:
mapView:regionWillChangeAnimated
Run Code Online (Sandbox Code Playgroud)
例如,通过将区域重新调整为允许的缩放级别.(有点像桌面视图会让你滚过边缘,但橡皮筋会回到原位.)但是,你的里程可能会有所不同,因为我没有将它用于此目的.
顺便说一下,OS 3.1中对MapKit方面有明确的修复/改进,给我带来麻烦.
| 归档时间: |
|
| 查看次数: |
79379 次 |
| 最近记录: |