我使用位置类的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设备或Google Navigation应用程序返回的结果之间的差异相当大.例如,我的方法将返回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