使用distanceTo方法

时间:2013-02-05 08:51:16

标签: java android

我的代码应该接受精度低于100的位置,如果新的位置精确度那么20岁以上的旧位置则使用新位置。 此外,如果从新位置到旧位置的距离较大,那么200使用它。

我不知道为什么但是在测试我的代码之后我在我的db中得到了以下位置:

enter image description here

最后3条记录彼此不到200米,我怎么用它们? 这是代码:

int Aloc = (int) loc.getAccuracy();
int AnewLoc = (int) newLoc.getAccuracy();
if(Aloc > AnewLoc +20)
    sendTask();
else
{
    float distance = loc.distanceTo(newLoc);
    if(distance > 200)
        sendTask();
}

此代码执行到其准确度小于100的位置。

修改 将条件更改为

if((AnewLoc+20) < Aloc)

我收到了以下记录: enter image description here

新记录的准确性比旧记录更高,距离小于200(0.01407 km,即14米)。我无法理解它是如何通过代码并发送到数据库的。

1 个答案:

答案 0 :(得分:1)

像这样更改您的检查逻辑

int Aloc = (int) loc.getAccuracy();
int AnewLoc = (int) newLoc.getAccuracy();
if(AnewLoc < ( Aloc+20))
    sendTask();
else
{
    float distance = loc.distanceTo(newLoc);
    if(distance > 200)
        sendTask();
}

这应该有效