2013-09-22 32 views
2

我有一个位置的经纬度。有没有一种方法可以在该点以南100米处计算?如何计算目标C中位置以南100米处?

我正在为Objective-C for 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) 
+0

在100米的尺度上,地球不是球体的事实几乎没有影响。当然,错误将远远小于手机中GPS接收器的准确度。 – JeremyP

+0

我必须在我的程序中计算出数千个这样的计算结果。组合错误很大,需要删除。 – user2734323

回答

1

我想出了一个办法来做到这一点。想到共享相同的......使用MKMapPointForCoordinate

  1. 坐标转换成MKMapPoint

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

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

2

经度表示位置东/西,所以它将保持不变。

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

上面假设地球是球形的。实际上它是一个椭球体,如果你想正确地考虑这个问题,答案会更复杂,但是对于大多数目的而言,假定一个球体的计算应该足够好。