sách gpt4 ai đã đi

iphone - MKMapView 缩放和区域

In lại 作者:行者123 更新时间:2023-12-03 18:08:37 hai mươi bốn 4
mua khóa gpt4 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 上指定最小-最大缩放级别:)

Cảm ơn

1 Câu trả lời

Đầu tiên,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/

hai mươi bốn 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com