开发附近的人需要用到计算两点距离。
网上找到一个,是Google给出的一个公式:
private static final double EARTH_RADIUS = 6378137;//赤道半径
private static double rad(double d){
return d * Math.PI / 180.0;
}
public static double GetDistance(double lon1,double lat1,double lon2, double lat2) {
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lon1) - rad(lon2);
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;
return s;//单位米
}
然而认真查看百度API你会发现百度提供了一个计算工具,两者计算结果都差不多,还是百度提供的吧:
//使用前需要在setContentView前初始化:
SDKInitializer.initialize(getApplicationContext());
double distance = DistanceUtil. getDistance(p1,p2);//单位米
网友评论