2010-09-28 183 views
4

我正在另一个使用AR的iPhone应用程序中工作,并且我正在创建自己的框架,但我无法获得第二个坐标相对于当前设备位置的角度,任何人都知道一个很好的资源,可以帮助我呢?2个GPS坐标之间的角度

在此先感谢!

回答

13

如果这两点都足够接近,并从两极好了,你可以使用一些简单的三角函数:

float dy = lat2 - lat1; 
float dx = cosf(M_PI/180*lat1)*(long2 - long1); 
float angle = atan2f(dy, dx); 

编辑:我忘了提,latNlongN - 因此dxdy - 只要不混合单位,可以是度数或弧度。然而,angle将始终以弧度回归。当然,如果你乘以180/M_PI,你可以恢复到度数。

+0

有些东西似乎有点过。 dy是度数。它看起来像你试图将dx转换为弧度。但为什么lat1转换为弧度然后乘以delta经度?但除此之外,atan2()应该像你说的那样适用于近点。 – 2010-09-28 02:36:51

+0

@Alex:dx和dy都是度数。但是dx必须用纬度的余弦来缩放,cosf需要弧度。 – 2010-09-29 13:04:38

+0

@MarceloCantos希望你还在身边。我意识到这是旧的。无论如何,请定义'相距够近'。 – Aeluned 2013-03-13 00:54:22

1

下面是这段代码的Android版本

import com.google.android.maps.GeoPoint; 
    public double calculateAngle(GeoPoint startPoint, GeoPoint endPoint) { 
     double lat1 = startPoint.getLatitudeE6()/1E6; 
     double lat2 = endPoint.getLatitudeE6()/1E6; 
     double long2 = startPoint.getLongitudeE6()/1E6; 
     double long1 = endPoint.getLongitudeE6()/1E6; 
     double dy = lat2 - lat1; 
     double dx = Math.cos(Math.PI/180 * lat1) * (long2 - long1); 
     double angle = Math.atan2(dy, dx); 
     return angle; 
    }