2

我有用户当前的经度和纬度和目的地(只是一个静态位置)。如何找到angle(0->360)当前用户位置和目的地之间的方向?

我目前正在使用此处currentLocation.bearingTo(destination)记录的但我无法找到正确的角度。

4

1 回答 1

3

最后我得到了解决方案,我在这里分享,因为它可以帮助其他人。

private double bearing(double startLat, double startLng, double endLat, double endLng){
        double longitude1 = startLng;
        double longitude2 = endLng;
        double latitude1 = Math.toRadians(startLat);
        double latitude2 = Math.toRadians(endLat);
        double longDiff= Math.toRadians(longitude2-longitude1);
        double y= Math.sin(longDiff)*Math.cos(latitude2);
        double x=Math.cos(latitude1)*Math.sin(latitude2)-Math.sin(latitude1)*Math.cos(latitude2)*Math.cos(longDiff);
        return (Math.toDegrees(Math.atan2(y, x))+360)%360;
    }

如果方法没有返回所需的值,那么您必须检查您的经度和纬度值。注意这个方法的返回值在 0->360 度之间。

于 2015-05-08T10:04:07.307 回答