在Google地图中从一个点移动到另一个点

时间:2014-07-16 21:52:31

标签: java google-maps google-maps-api-2

我需要在Google地图应用程序中将一个标记从一个点移动到另一个点。但是,我在使用LatLng坐标时遇到了麻烦,特别是因为精度错误。

我尝试了基本的2d运动,但似乎它不是地球坐标的正确方法

        double dx = target.longitude - position.longitude;
        double dy = target.latitude - position.latitude;

        //Auxiliar.distance returns the distance in meters between two coordinates
        double lenght = Auxiliar.distance(target, position);

        dx *= SPEED/lenght;
        dy *= SPEED/lenght;

        position = new LatLng(position.latitude + dy, 
                                position.longitude + dx);

我在尝试减去坐标时也遇到精度错误,因为它们是双倍的,所以我尝试使用BigDecimal,但仍然没有成功。

是否有算法在地球坐标系中进行直线运动?


这是我的距离函数的代码

public static double distance(LatLng point1, LatLng point2)
{
    double earthRadius = 6371 ;
    double dLat = Math.toRadians(point2.latitude-point1.latitude);
    double dLng = Math.toRadians(point2.longitude-point1.longitude);
    double sindLat = Math.sin(dLat / 2);
    double sindLng = Math.sin(dLng / 2);
    double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2)
            * Math.cos(Math.toRadians(point1.latitude)) * Math.cos(Math.toRadians(point2.latitude));
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double dist = earthRadius * c;

    return dist*1000;
}

0 个答案:

没有答案