gpt4 book ai didi

iphone - MKMapView 缩放和区域

转载 作者:行者123 更新时间:2023-12-03 18:08:37 24 4
gpt4 key购买 nike

我熟悉使用 Google Maps Javascript API。最近我开始在 iPhone 项目中使用 MapKit 框架,但我很难弄清楚缩放和在 map 上设置区域。

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

当我使用 MKMapView 委托(delegate)并跟踪 RegionDidChange 委托(delegate)方法结果中的跨度值时,结果似乎彼此不相关。当我缩小并看到跨度增量值按照文档中指定的方式增加时,这是可以的。但突然我拖动 map 而不缩放,增量值变成 0.0。

有人可以解释一下这些跨度和增量的引用点是什么吗?或者是否有任何算法可以将整数缩放级别(如 9)转换为这些增量值?

作为一个额外的问题,有没有办法在 MKMapView 上指定最小-最大缩放级别:)

谢谢

最佳答案

首先,MKMapView 不像 Google map 那样使用/具有一组预定义的缩放级别。

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

  1. 中心(区域的中心点),以及
  2. span(中心周围可见区域的大小)。

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

但是,跨度(MKCooperativeSpan)包含:

  1. latitudeDelta(区域代表的垂直距离),以及
  2. longitudeDelta(区域代表的水平距离)。

一个简短的例子。这是一个玩具 MKCooperativeRegion:

  1. 中心:
    • 纬度:0
    • 经度:0
  2. 跨度:
    • 纬度Delta:8
    • 经度增量:6

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

  1. 最小坐标(左下点):
    • 纬度:-4
    • 经度:-3
  2. 最大坐标(右上角点):
    • 纬度:4
    • 经度:3

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

至于限制区域,你可以用这个委托(delegate)方法来玩:

mapView:regionWillChangeAnimated

例如通过将区域大小调整回您允许的缩放级别。 (有点像表格 View 让您滚动越过边缘,但随后橡皮筋又会回到原位。)但是,您的里程可能会有所不同,因为我没有将其用于此目的。

顺便说一句,OS 3.1 对 MapKit 的某些方面进行了明确的修复/改进,这些方面在 3.0 中给我带来了麻烦。

关于iphone - MKMapView 缩放和区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1166444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com