我已经使用Haversine
来计算两个地点之间的距离。无法获得两地之间的完美距离
public static class Haversine {
static int Radius = 6371;
public static double haversine(double lat1, double lon1, double lat2,
double lon2) {
double dLat = Math.toRadians(lat2 - lat1);
double dLon = Math.toRadians(lon2 - lon1);
lat1 = Math.toRadians(lat1);
lat2 = Math.toRadians(lat2);
double a = Math.sin(dLat/2) * Math.sin(dLat/2)
+ Math.cos(Math.toRadians(lat1))
* Math.cos(Math.toRadians(lat2)) * Math.sin(dLon/2)
* Math.sin(dLon/2);
double c = 2 * Math.asin(Math.sqrt(a));
double valueResult = Radius * c;
double km = valueResult/1;
DecimalFormat newFormat = new DecimalFormat("####");
int kmInDec = Integer.valueOf(newFormat.format(km));
double meter = valueResult % 1000;
int meterInDec = Integer.valueOf(newFormat.format(meter));
Log.i("Radius Value", "" + valueResult + " KM " + kmInDec
+ " Meter " + meterInDec);
return Radius * c;
/*double a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1)* Math.cos(lat2);
double c = 2 * Math.asin(Math.sqrt(a));
return R * 2 * Math.asin(Math.sqrt(a));*/
}
}
从上述代码我无法获得2位置之间的确切距离。
当我运行上述mehtod然后显示4.32 km
从我的两个地方,但当我检查google map
然后它显示5.3 km
。
我也用过Location.distanceBetween
方法,它仍然显示4.32 km
。
如何获得位置之间的确切距离?
看一看http://stackoverflow.com/questions/1502590/calculate-distance-between-two-points-in -google-maps-v3 –
我已经看到了。在此基础上实施。 – deepak
我想上面的公式会计算位移而不是距离。您可以使用Google Maps Distance Matrix Api。 https://developers.google.com/maps/documentation/distance-matrix/intro –