1

私のコードは、精度が 100 未満の場所を受け入れる必要があります。新しい場所の精度が古い場所の精度よりも小さい場合は、新しい場所を使用してください。また、新しい場所から古い場所までの距離が 200 よりも大きい場合は、それを使用します。

理由はわかりませんが、コードをテストした後、データベースで次の場所を取得しました。

ここに画像の説明を入力

最後の 3 つのレコードは互いに 200 m 未満です。どうしてそれらを使用するのですか?? コードは次のとおりです。

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 メートル) 未満です。コードを通過してデータベースに送信される理由がわかりません。

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 に答える