JAVA計算兩個經緯度之間的距離
阿新 • • 發佈:2019-01-22
1、只不過是封裝好的一個計算方法,計算的方式也就是上學時就學過的定理,老規矩直接貼程式碼,主要是方便實用,計算結果單位:米
public class MapUtils { //private static double EARTH_RADIUS = 6378.137; private static double EARTH_RADIUS = 6371.393; private static double rad(double d) { return d * Math.PI / 180.0; } /** * 計算兩個經緯度之間的距離 * @param lat1 * @param lng1 * @param lat2 * @param lng2 * @return */ public static double GetDistance(double lat1, double lng1, double lat2, double lng2) { double radLat1 = rad(lat1); double radLat2 = rad(lat2); double a = radLat1 - radLat2; double b = rad(lng1) - rad(lng2); 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 * 1000); return s; } public static void main(String[] args) { System.out.println(MapUtils.GetDistance(29.490295,106.486654,29.615467,106.581515)); } }
2、順帶提一下百度地圖提供的計算兩地經緯度的方法,很簡單的一句話呼叫,可以自行去看百度地圖API試試,計算結果單位:米
var map = new BMap.Map("allmap");
var pointA = new BMap.Point(106.486654,29.490295); // 點座標A
var pointB = new BMap.Point(106.581515,29.615467); // 點座標B
alert(map.getDistance(pointA,pointB)).toFixed(2)); //toFixed(2)意思為保留小數點後兩位