0

これは、Google マップを使用して Android で行います。

GeoPoint の配列リストがあります。 GeoPoint API はこちらです。

List<GeoPoint> geoPoints;

ここで、各 GeoPoint の頻度を確認したいと思います。交差がある場合 (2 つが等しいため)、デバッグ ログを出力したいと考えています。

Collections.frequency(geoPoints, geoPoints.get(i));正しい結果が返されません.2つの点が交差しているかどうかはチェックされません...

4

1 に答える 1

1

ほとんどの場合、指で地図を描いているときに、まったく同じ場所に 2 つのジオポイントが存在することはありません。

使用できる最も簡単な方法は、1 つのジオポイント投影座標から別のジオポイント投影座標までの距離をテストすることです。この距離がしきい値よりも小さい場合、同じポイントと見なされます。

projection.toPixels(geoArrList.get(i), pointToTest);

Point p1 = new Point();
for(int i=0; i<geoArrList.size(); i++){
    projection.toPixels(geoArrList.get(i), p1);
    int squareDistance = ((pointToTest.x - p1.x) * (pointToTest.x - p1.x) +
        (pointToTest.y - p1.y) * (pointToTest.y - p1.y));
    if(squareDistance  < THRESOULD){
        //same point
    }
}

よろしく。

于 2012-11-25T17:06:43.643 に答える