Java编程获取经纬度之间距离的方法
本文实例讲述了Java编程获取经纬度之间距离的方法。分享给大家供大家参考,具体如下:
publicclassGeoUtil{
/**
*根据经纬度和距离返回一个矩形范围
*
*@paramlng
*经度
*@paramlat
*纬度
*@paramdistance
*距离(单位为米)
*@return[lng1,lat1,lng2,lat2]矩形的左下角(lng1,lat1)和右上角(lng2,lat2)
*/
publicstaticdouble[]getRectangle(doublelng,doublelat,longdistance){
floatdelta=111000;
if(lng!=0&&lat!=0){
doublelng1=lng-distance
/Math.abs(Math.cos(Math.toRadians(lat))*delta);
doublelng2=lng+distance
/Math.abs(Math.cos(Math.toRadians(lat))*delta);
doublelat1=lat-(distance/delta);
doublelat2=lat+(distance/delta);
returnnewdouble[]{lng1,lat1,lng2,lat2};
}else{
//TODOZHCH等于0时的计算公式
doublelng1=lng-distance/delta;
doublelng2=lng+distance/delta;
doublelat1=lat-(distance/delta);
doublelat2=lat+(distance/delta);
returnnewdouble[]{lng1,lat1,lng2,lat2};
}
}
/**
*得到两点间的距离米
*
*@paramlat1
*@paramlng1
*@paramlat2
*@paramlng2
*@return
*/
publicstaticdoublegetDistanceOfMeter(doublelat1,doublelng1,
doublelat2,doublelng2){
doubleradLat1=rad(lat1);
doubleradLat2=rad(lat2);
doublea=radLat1-radLat2;
doubleb=rad(lng1)-rad(lng2);
doubles=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)/10;
returns;
}
privatestaticdoublerad(doubled){
returnd*Math.PI/180.0;
}
/**
*地球半径:6378.137KM
*/
privatestaticdoubleEARTH_RADIUS=6378.137;
}
希望本文所述对大家Java程序设计有所帮助。
