【发布时间】:2013-01-15 02:18:09
【问题描述】:
我使用Location类的distanceBetween()来计算两点之间的距离如下:
private float getDistanceInMiles(GeoPoint p1, GeoPoint p2) {
double lat1 = ((double)p1.getLatitudeE6()) / 1e6;
double lng1 = ((double)p1.getLongitudeE6()) / 1e6;
double lat2 = ((double)p2.getLatitudeE6()) / 1e6;
double lng2 = ((double)p2.getLongitudeE6()) / 1e6;
float [] dist = new float[1];
Log.i("destination coordinates", "Latitude:" + lat2 + ", Longitude: " + lng2);
Location.distanceBetween(lat1, lng1, lat2, lng2, dist);
return dist[0] * 0.000621371192f;
}
Documentation 表示 distanceBetween() “计算两个位置之间的近似距离(以米为单位),以及它们之间最短路径的初始和最终方位可选。”然而 distanceBetween() 返回的结果与真正的 GPS 设备或谷歌导航应用程序之间的差异是相当大的。例如,我的方法将返回 6.2 英里,而谷歌地图显示同一位置的 10 英里。我仔细检查了起点 p1 和终点 p2 的坐标,它们似乎是正确的。这是 distanceBetween() 方法的工作原理还是我做错了什么?顺便问一下,有没有办法使用 Google Place API 来检索距离作为 JSON 响应?
谷歌地图计算的距离:6.1 英里
结果
Location.distanceBetween(41.742964, -87.995971, 41.811511, -87.967923, dist) is
4.947700
【问题讨论】:
-
Android MapView 不使用 Google Maps API V3。 (已删除标签)
-
Marcin S.,41.742964 与 41.742972 不同,-87.995971 也与 -87.996068 不同...
-
你为什么要除以e6?
标签: android google-maps android-location