Android MapsApiV2 Location.distanceTo给出了错误的值

时间:2015-08-23 12:16:32

标签: android api google-maps

这似乎是一个重复的问题,但事实并非如此。请在将其标记为重复之前阅读

我试图获得两个LatLng之间的距离,所以首先我生成它的 PolylineOptions
现在的问题是 - 输出是不可理解的。
它与其他问题不同,因为它使用PolylineOptions。

计算代码

@Override
public void onParserTaskComplete(PolylineOptions points, int count) {
    if (points != null) {
        float totalDistance = 0;

        for (int i = 1; i < points.getPoints().size(); i++) {
            Location currLocation = new Location("this");
            currLocation.setLatitude(points.getPoints().get(i).latitude);
            currLocation.setLongitude(points.getPoints().get(i).longitude);

            Location lastLocation = new Location("this");
            currLocation.setLatitude(points.getPoints().get(i - 1).latitude);
            currLocation.setLongitude(points.getPoints().get(i - 1).longitude);

            totalDistance += lastLocation.distanceTo(currLocation);


        }
        items.get(count).setDistance(String.valueOf(totalDistance));
        adapter.notifyDataSetChanged();
    } else {
        items.get(count).setDistance("");
        adapter.notifyDataSetChanged();
    }
}

根据谷歌地图,距离应该在 5.5KM 附近 但输出结果如 8783711.0

问题 - 如何将此值转换为KM?

1 个答案:

答案 0 :(得分:0)

您复制了currLocation并且没有为lastLocation设置值 这是正确的方法:

>>> def return_this(this):
...     return this
... 
>>> return_this(5)
5
>>> return_this(None)
>>> print return_this(5)
5
>>> print return_this(None)
None
>>> 5
5
>>> None
>>>