我如何计算Java中两个gps点之间的距离? [英] How can i calculate the distance between two gps points in Java?

查看:749
本文介绍了我如何计算Java中两个gps点之间的距离?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用了这段代码,但它不起作用:

I used this code but it doesnt work:

需要两个gps坐标之间的距离,如41.1212,11.2323公里(Java)

Need the distance between two gps coordinates like 41.1212, 11.2323 in kilometers (Java)

double d2r = (180 / Math.PI);
double distance = 0;

try{
    double dlong = (endpoint.getLon() - startpoint.getLon()) * d2r;
    double dlat = (endpoint.getLat() - startpoint.getLat()) * d2r;
    double a =
        Math.pow(Math.sin(dlat / 2.0), 2)
            + Math.cos(startpoint.getLat() * d2r)
            * Math.cos(endpoint.getLat() * d2r)
            * Math.pow(Math.sin(dlong / 2.0), 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double d = 6367 * c;

    return d;

} catch(Exception e){
    e.printStackTrace();
}


推荐答案

经度和纬度度(0-360)。如果你想把度数转换成弧度(0-2π),你需要除以360并乘以2ππ,(或者相当于,乘以π/ 180 )。然而,在你的代码中,你乘以180 //

Longitude and latitude are given in degrees (0-360). If you want to convert degrees to radians (0-2π) you need to divide by 360 and multiply by 2π, (or equivalently, multiply by π/180). In your code however, you multiply by 180/π.

也就是说,改变

That is, change

double d2r = (180 / Math.PI);

转换为

double d2r = Math.PI / 180;

这篇关于我如何计算Java中两个gps点之间的距离?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆