我使用谷歌地图在 Android 上执行此操作。
我有一个 GeoPoint 的数组列表。 GeoPoint API 在这里。
List<GeoPoint> geoPoints;
现在我想检查每个 GeoPoint 的频率。如果有一些相交(因为其中两个相等),我想打印出调试日志。
Collections.frequency(geoPoints, geoPoints.get(i));
没有返回正确的结果,它不检查两点是否相交......
我使用谷歌地图在 Android 上执行此操作。
我有一个 GeoPoint 的数组列表。 GeoPoint API 在这里。
List<GeoPoint> geoPoints;
现在我想检查每个 GeoPoint 的频率。如果有一些相交(因为其中两个相等),我想打印出调试日志。
Collections.frequency(geoPoints, geoPoints.get(i));
没有返回正确的结果,它不检查两点是否相交......
最有可能的是,在用手指在地图上绘图时,您永远不会在完全相同的位置上拥有两个地理点。
您可以使用的最简单的方法是测试从一个地理点投影坐标到另一个的距离,如果该距离小于阈值,则将其视为同一点。
例子
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
}
}
问候。