mysql数据库中计算两个百度地图坐标的距离

来源:互联网 发布:windows oid snmp 编辑:程序博客网 时间:2024/06/10 09:36

距离(米)= SQRT(pow(6370693.5 * COS(weidu1*pi()/180)*(if((jingdu1*pi()/180-jingdu2*pi()/180)>pi(),2*pi()-(jingdu1*pi()/180-jingdu2*pi()/180),(if((jingdu1*pi()/180-jingdu2*pi()/180)<-pi(),2*pi()+(jingdu1*pi()/180-jingdu2*pi()/180),(jingdu1*pi()/180-jingdu2*pi()/180))))),2) + pow(6370693.5 * (weidu1 * pi()/180 - weidu2*pi()/180),2));


java代码:

public static void GetShortDistance(double jingdu1, double weidu1, double jingdu2, double weidu2) {double jing1弧度, wei1弧度, jing2弧度, wei2弧度;double dx, dy, 经度差;double distance;// 角度转换为弧度jing1弧度 = jingdu1 * DEF_PI180;wei1弧度 = weidu1 * DEF_PI180;jing2弧度 = jingdu2 * DEF_PI180;wei2弧度 = weidu2 * DEF_PI180;// 经度差经度差 = jing1弧度 - jing2弧度;// 若跨东经和西经180 度,进行调整if (经度差 > PI)经度差 = DEF_2PI - 经度差;else if (经度差 < -PI)经度差 = DEF_2PI + 经度差;dx = DEF_R * Math.cos(wei1弧度) * 经度差; // 东西方向长度(在纬度圈上的投影长度)dy = DEF_R * (wei1弧度 - wei2弧度); // 南北方向长度(在经度圈上的投影长度)// 勾股定理求斜边长distance = Math.sqrt(dx * dx + dy * dy);System.out.println(distance);}


0 0
原创粉丝点击