LatLng和新手机上返回错误值之间的距离

时间:2014-12-02 18:31:35

标签: android geolocation location latitude-longitude

我的应用程序在我的旧HTC One M7计算距离方面效果很好。然而,在我妻子的HTC One M8和我的新索尼Xperia Z3上,它计算的距离是关闭的。它告诉我,我走得比实际还要远。当我正在徒步旅行或跑步时,我更加注意到这一点。如果我正在滑雪,那似乎更准确。我猜测速度与它有关(如果我走得更快,计算更准确)。

我正在调用一种方法来更新每个位置更改的总距离,这样做:

float[] distanceResults = new float[3];
double distanceResult = 0;
try
{
    Location.distanceBetween(location.getLatitude(), location.getLongitude(), previousLocation.getLatitude(), previousLocation.getLongitude(), distanceResults);
    distanceResult = distanceResults[0];
}
catch(IllegalArgumentException e)
{
    distanceResult = 0;
}
// add the new distance to the total distance
totalDistanceValue += distanceResult;

我无法理解为什么它不能在新手机上准确计算。我想过只计算距离每20个位置的变化,但这似乎是一个贫民区解决这个问题......甚至可能无法正常工作。

任何人都有任何想法,为什么当我的节奏较慢时,我的总距离会超过新手机上的距离?

TIA

1 个答案:

答案 0 :(得分:0)

当您需要准确性时,您必须使用位置的准确性。可能您已经看到谷歌地图上的圆圈变得更小,因为它在您的位置为零。该圆圈基于位置的准确性。

@Override
public void onLocationChanged(Location location) {
        if (!location.hasAccuracy()) {
            return;
        }
        if (location.getAccuracy() > 4) {
            return;
        }

 //process location accurate to 4 meters
 }