android – distanceBetween()返回不准确的结果?

前端之家收集整理的这篇文章主要介绍了android – distanceBetween()返回不准确的结果?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用位置类的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

解决方法

Google Navigation通常会按照路线列表中的步骤进行驾驶或步行距离,而不是直线距离,这是distanceBetween()报告的距离.
原文链接:https://www.f2er.com/android/312491.html

猜你在找的Android相关文章