我的代码应该接受精度低于100的位置,如果新的位置精确度小那么20岁以上的旧位置则使用新位置。 此外,如果从新位置到旧位置的距离较大,那么200使用它。
我不知道为什么但是在测试我的代码之后我在我的db中得到了以下位置:
最后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)
我收到了以下记录:
新记录的准确性比旧记录更高,距离小于200(0.01407 km,即14米)。我无法理解它是如何通过代码并发送到数据库的。
答案 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();
}
这应该有效