2

我有一个位置的纬度和经度。有没有办法可以计算该点以南 100 米?

我正在用 Objective C 为 iOS7 平台编写代码。

我正在寻找一些能有效解决问题的功能。

我尝试了Haversine 公式(如下所示)。但是计算变得越来越复杂,并且由于 Haversine 将地球视为一个球体,因此该值并不准确。

a = sin²((φ1-φ2)/2) + cos(φ1)*cos(φ2)*sin²((λ1-λ2)/2)
c = 2*atan2(√a, √(1−a))
distance = R*c
(φ is latitude, λ is longitude, R is Earth’s = 6,371km)
4

2 回答 2

2

经度代表位置东/西,因此将保持不变。

将纬度表示为有符号的度数,赤道以北为正数,赤道以南为负数。然后向南走 100 米,您想向南走 100 米对应的度数。地球的周长是 40075 公里,即 40075000 米,代表 360 度。所以 100 米对应 100/40075000*360,也就是大约 0.0008983 度。所以从纬度中减去 0.0008983 度得到你的答案。

以上假设地球是球形的。事实上它是一个椭球体,如果你想适当地考虑到这一点,答案会更复杂,但对于大多数目的,假设一个球体的计算应该足够好。

于 2013-09-22T02:24:19.657 回答
1

我想出了一个办法来做到这一点。想分享一样的...

  1. 将坐标转换为MKMapPoint使用MKMapPointForCoordinate.

  2. MKMapPoin然后添加或减去步骤 1 中获得的 t 的 x 或 y 坐标。MKMapPointMake用于执行此操作。

  3. 转换MKMapPointCLLocationCoordinate2D. 用于MKCoordinateForMapPoint执行此操作。

于 2013-09-22T04:56:23.607 回答