1

我的代码应该接受精度低于 100 的位置,如果新位置精度小于20 中的旧位置精度,则使用新位置精度。此外,如果从新位置到旧位置的距离大于 200,则使用它。

我不知道为什么,但在测试我的代码后,我在我的数据库中得到了以下位置:

在此处输入图像描述

最后3条记录相距不到200m,我怎么用它们?这是代码:

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)

我收到以下记录: 在此处输入图像描述

新记录比旧记录精度更高,距离小于200(0.01407公里,即14米)。我不明白它是如何通过代码传递到数据库的。

4

1 回答 1

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();
}

这应该工作

于 2013-02-05T08:57:21.360 回答