Считать частоту геопункта

Я делаю это на Android с Google Maps.

У меня есть массив GeoPoint. GeoPoint API здесь.

List<GeoPoint> geoPoints;

Теперь я хочу проверить частоту каждого GeoPoint. Если есть некоторое пересечение (потому что два из них равны), я хочу распечатать журнал отладки.

Collections.frequency(geoPoints, geoPoints.get(i)); не возвращает мне правильный результат, он не проверяет, пересекаются ли две точки...

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
    }
}

С уважением.

Другие вопросы по тегам