java 经纬度距离_java根据经纬度计算距离

在实际地图项目中会碰见距离的计算,这里写出来,以后参考:

/**

* @author 作者 :zhaoliang

* @version : v1.0

*创建时间:2018年6月26日 下午3:32:30

* 类说明 :根据经纬度计算距离

*/

public class DistanceUtil {

private static double EARTH_RADIUS = 6378.137; //地球半径

/**

* 谷歌地图计算两个坐标点的距离

* @param latitude 页面传递过来的经度

* @param longitude 页面传递过来的纬度

* @param gaode_lng 数据库中停车场的经度

* @param gaode_lat 数据库中停车场的纬度

* @return 距离(千米)

*/

public static double getDistance(double latitude, double longitude, double gaodeLng, double gaodeLat) {

double radLat1 = Math.toRadians(longitude);

double radLat2 = Math.toRadians(gaodeLat);

double a = radLat1 - radLat2;

double b = Math.toRadians(latitude) - Math.toRadians(gaodeLng);

double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +

Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));

s = s * EARTH_RADIUS;

s = Math.round(s * 10000) / 10000;

return s;

}

public static void main(String[] args) {

long b = System.currentTimeMillis();

for(int i=0; i<1000000; i++){

getDistance(116.403933,39.914147, 116.403237,39.927919);

}

System.out.println("耗时:"+(System.currentTimeMillis()-b)+"毫秒"); //耗时:461毫秒

double dist = getDistance(116.403933,39.914147, 116.403237,39.927919);

System.out.println("两点相距:" + dist + "千米"); //两点相距:1.0千米

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值