计算地点频率

时间:2012-11-25 12:12:31

标签: java android collections geopoints

我在Android上使用Google地图执行此操作。

我有一个GeoPoint的arraylist。 GeoPoint API is here

List<GeoPoint> geoPoints;

现在我想查看每个GeoPoint的频率。 如果有一些交叉(因为它们中的两个是相等的)我想打印出一个调试日志。

Collections.frequency(geoPoints, geoPoints.get(i));不会返回正确的结果,也不会检查两个点是否相交...

1 个答案:

答案 0 :(得分:1)

最有可能的是,在地图上用手指绘图时,您将永远不会在完全相同的位置上拥有两个地理位置。

您可以使用的最简单的方法是测试从一个地理点投影坐标到另一个地理点投影坐标的距离,如果这个距离小于一个thresould值,它将被认为是相同的点。

示例

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

问候。