如何计算目标C中某个位置以南100米?

时间:2013-09-22 02:08:51

标签: objective-c ios7 latitude-longitude

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

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

我正在寻找能够有效发挥作用的一些功能。

我尝试过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)

2 个答案:

答案 0 :(得分:2)

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

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

以上假设地球是球形的。事实上它是一个椭圆体,如果你想把它考虑得恰到好处,答案会更复杂,但对于大多数用途来说,假设一个球体的计算应该足够好。

答案 1 :(得分:1)

我找到了一种方法来做到这一点。想分享同样的事情......

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

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

  3. MKMapPoint转换回CLLocationCoordinate2D。使用MKCoordinateForMapPoint执行此操作。