I use distanceBetween()
Location 类来计算两点之间的距离,如下所示:
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;
}
文档表示 distanceBetween() “计算两个位置之间的近似距离(以米为单位),并可选择计算它们之间最短路径的初始和最终方位。”然而,distanceBetween() 返回的结果与真实 GPS 设备或 Google 导航应用程序返回的结果之间的差异相当大。例如,我的方法将返回 6.2 英里,而谷歌地图显示同一位置的 10 英里。我仔细检查了起点 p1 和终点 p2 的坐标,它们似乎是正确的。这是 distanceBetween() 方法的工作原理还是我做错了什么?顺便问一下,有没有办法使用 Google Place API 来检索距离作为 JSON 响应?
Google 地图计算的距离:6.1 英里
![enter image description here](https://i.stack.imgur.com/7u2mq.png)
结果是
Location.distanceBetween(41.742964, -87.995971, 41.811511, -87.967923, dist) is
4.947700
Google 导航通常报告沿着路线列表中的一组步骤行驶或步行的距离,而不是直线距离,这就是distanceBetween()
报告。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)