2012-11-25 88 views
0

我使用Google地圖在Android上執行此操作。計算結點頻率

我有一個GeoPoint的陣列列表。 GeoPoint API is here

List<GeoPoint> geoPoints; 

現在我想檢查每個GeoPoint的頻率。 如果有一些相交(因爲其中兩個相等),我想打印出一個調試日誌。

Collections.frequency(geoPoints, geoPoints.get(i));不回我正確的結果,它不檢查,如果兩個點相交......

+0

你是怎麼相交的? – Luis

+0

當我有兩個相同的x和y座標的地理點,這意味着兩條線彼此相交 – 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,它將檢查完全相同的點。嘗試一下,你會發現最有可能的tou不會得到完全匹配。 – Luis

+0

你也可以檢查相交的線段,但它需要更多的數學。 – Luis