Считать частоту геопункта
Я делаю это на 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
}
}
С уважением.