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程序设计有所帮助。