2010-01-08 18 views
1

這是一個怪異的位。我在地圖上渲染數據集,需要分割長和長相同的點。我有想法將我的數據集按照長和寬進行分組,並且它們在相同的位置進行相同的調整,以便它們在地圖上顯示爲單獨實體 - 而不是重疊。對於相同位置的點變動的長經度略有變化

我使用linq將它們分組,然後枚舉我的分組項目,並且我想在原點周圍螺旋調整的點(這是一個要求,因爲我可能有幾百個地理位置相同的點),以便它們從原始點展開。

有誰知道一個簡單的計算,我可以添加到我的循環以這種方式調整項目。

謝謝,

回答

0

這背後的數學很簡單。一個圓可以用x軸的正弦函數和y軸的餘弦函數表示。這裏有一些僞代碼:

int num = OverlappingPoints.Length; 
for(int i = 0; i < num; ++i) 
{ 
    int radius = 50; 

    // using 2*pi because most math functions use radians... change 2*pi to 360 if your math library uses 360 degrees instead of 2*pi radians to represent a circle. 
    Map.Plot(OverlappingPoints[i].Latitude + radius*sin(2*pi*i/num), 
     OverlappingPoints[i].Latitude + radius*cos(2*pi*i/num)); 
} 

該僞代碼,如果正確實施,將圍繞原點繪製出一個圓點。如果要增加圓的半徑,請將半徑倍數更改爲正弦函數和餘弦函數。 如果你想要螺旋點而不是做一個圓圈,選擇每圈圓周的點數,並用正弦/餘弦函數中的數字代替num。此外,在每次循環迭代後增加半徑,可能是使用一個數字並將其乘以循環索引。 (即您可以將radius更改爲50*i)。

希望這會有所幫助。