根据经纬度求距离

来源:互联网 发布:大富豪源码 编辑:程序博客网 时间:2024/05/01 17:19
 
public class EarthTest {//地球半径private static final double EARTH_RADIUS = 6378.137;public static void main(String[] args) { /* //外环路 百度坐标 A  Double bdlatA=31.127036;  Double bdlngA=121.399809 ;  //莲花路 百度坐标B  Double bdlatB=31.136804;   Double bdlngB=121.409331; */    //外环路  高德坐标 A     Double bdlatA=31.120852;  Double bdlngA=121.393003;  //莲花路 高德坐标B  Double bdlatB=31.130918;   Double bdlngB=121.402981;      System.out.println(GetDistanceLnt(  bdlngA,bdlatA,bdlngB,bdlatB  ));  }private static double rad(double d) {return d * Math.PI / 180.0;}public   static double GetDistanceLnt(double lng1, double lat1 , double lng2, double  lat2){return GetDistance(  lat1,   lng1, lat2, lng2    );}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 * 10000) / 10000.0;s = Math.round(s * 100) / 100.0;return s;}    }

0 0
原创粉丝点击