Mapkit坐标线的坐标

时间:2011-11-18 11:26:10

标签: objective-c ios geolocation mapkit

我有一个CLLocationCoordinate2D(c1)和一个CLLocation(l1),所以我有每个点的纬度/经度值,我可以使用以下方法计算它们之间的距离:

[c1 distanceFromLocation:l1]

如何找到比c1(沿同一轴承)靠近l1 100米的点(c2)的坐标?

enter image description here

我使用以下基本触发计算了它:

  1. 使用纬度和经度的差异来计算斜边和角度
  2. 使用了到cl的距离和到c2的距离之间的比率来得到以c2结尾的三角形的斜边
  3. 使用cos和sin来计算c2的经度和纬度
  4. 但这看起来像是一种黑客的方式,因为它没有考虑到曲率,似乎是以不应该使用的方式使用纬度和经度。它确实似乎在很短的距离内工作。

2 个答案:

答案 0 :(得分:1)

经过一番研究,我发现了一个计算地球表面两点之间弯曲距离的基本公式:

dlon = lon2 - lon1 
dlat = lat2 - lat1 
a = { sin(dlat/2) }^2 + [ cos(lat1) * cos(lat2) * { sin(dlon/2) }^2 ] 
c = 2 * arcsin(min(1,sqrt(a))) 
d = R * c

答案 1 :(得分:1)

虽然Rickay的回答很有帮助,但我最终使用了以下优秀的库,它具有许多用于核心位置计算的有用功能:https://github.com/100grams/CoreLocationUtils