2012-11-25 3 views
0

Google지도를 사용하여 Android에서이 작업을 수행합니다.geopoint 주파수를

저는 GeoPoint의 arraylist가 있습니다. GeoPoint API is here.

List<GeoPoint> geoPoints; 

이제 각 GeoPoint의 빈도를 확인하고 싶습니다. 일부가 교차하는 경우 (두 개가 동일하므로) 디버그 로그를 출력하고 싶습니다.

Collections.frequency(geoPoints, geoPoints.get(i)); 두 지점이 교차하는 경우에 저에게 올바른 결과를 반환하지 않습니다, 그것은 확인하지 않습니다 ...

+0

당신은 무엇을 교차합니까? – Luis

+0

동일한 x 및 y 좌표로 2 개의 지리적 포인트를 얻은 경우 두 라인이 서로 교차한다는 것을 의미합니다. – krackmoe

+1

당신은 모든 것을 잘못 이해하고 있습니다. 'GeoPoint'에는 x, y 좌표가 없으며 위도와 경도가 있습니다. 그들은 선을 나타내지 않으며, 점을 나타내고 점은 교차하지 않습니다. 그들은 동일하거나 서로 다릅니다. 당신은 확실히 당신의 질문을 다시 생각할 필요가 있습니다. – Luis

답변

1

지도에 손가락으로 그리는 동안 대부분의 경우, 당신은 정확히 같은 두 geopoints을하지 않습니다 위치.

가장 간단한 방법은 하나의 지오 포인트 투영 좌표에서 다른 좌표까지의 거리를 테스트하는 것입니다.이 거리가 적은 경우에는 동일한 점을 고려해야합니다.

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

간주한다.

+0

그러나 선이 교차 할 경우 GeoPoint가 동일해야합니다. 왜이 생각이 잘못 되었습니까? 나는 당신에게 뭔가를 그렸습니다 : http://666kb.com/i/c9a6n21ouo5yru2x3.gif 그래서 .. 왜 그들은 같은 GeoPoint를 가지고 있지 않습니까? :) – krackmoe

+1

그들은 포인트가 아니기 때문에. 그것들은 점처럼 보이는 작은 상호 연결 라인 세그먼트입니다. 위의 코드에서'THRESOULD'를 0으로 설정하면 형식이 정확히 동일한 점을 검사합니다. 그것을 시도하면 가장 일치하는 툰이 정확한 일치를 얻지 못한다는 것을 알 수 있습니다. – Luis

+0

또한 교차 선분을 확인할 수도 있지만 더 많은 수학이 필요합니다. – Luis