2010-10-13 43 views
5

我正在尋找一種算法,該算法可以讓我在視覺上將任何兩輛至四輛車輛分開,這些車輛在地圖上足夠接近,足以掩蓋彼此。我需要過濾出車輛超過四輛的情況,因爲這些車輛會在某些區域大量聚集,在這些情況下將它們分開並不重要。該算法還應該標記已經處理過的車輛。什麼是在地圖上近距離地重疊重疊車輛的最佳算法?

在我的問題空間中,瞭解車輛是否存在以及能夠看到有關它們的信息比擁有絕對準確的信息更重要。

這個想法是增加大約10碼(因爲正在使用的地圖比例),因此可以看到單個車輛而不是被其他附近的車輛遮擋。

我想到了幾種方法來做到這一點,但考慮到這裏的答案質量以及有人可能已經這樣做的事實,我想我會提出這個問題。

我添加了一個當前顯示內容的圖片,以幫助澄清其中的一條評論(確定,它不是一個圖表,但這是實際顯示給用戶的內容)。

幾個答案要求改變視覺隊列,用於指示在給定位置有多少輛車(高爾夫球車)。我不想改變用戶期望的視覺效果,必須向用戶解釋它的含義。使用方塊的答案與我所尋找的最接近,但這只是視覺部分。我還在尋找一種算法,以便如何最好地遍歷列表尋找組的2到4個高爾夫球車,這些高爾夫球車在n個(可以說5個)碼的範圍內,而忽略更大的分組(車穀倉,快餐小屋等)。圖標上的數字對應於購物車號碼。

本申請還允許用戶縮放地圖/縮小,從而進一步縮小需要在車廂之間的多個分離,使得它們不重疊在視覺地圖。

圖中請注意,汽車78和62擋住了他們身後的汽車。

alt text

+0

你能說得更具描述性嗎?圖表會很好。 – Jacob 2010-10-13 22:17:16

回答

0

正方形似乎是一個很好的選擇,因爲你不擔心有四個以上的車輛情況。

我會將所有車輛的「重疊」接近度的平均位置,並將其設置爲廣場的「中心」,其長度和寬度足夠大,使車輛在每個角落不會導致任何重疊。

然後我會在左上角與車輛0開始,然後我倒過來廣場逆時針的邊角,加上下一輛車到下一個角落。

簡單,有效的,你失去了一些精度,假設這就是OK(從您的帖子,似乎它是什麼?)這是我做竟被。

1

我想我會受到誘惑,從而使得各車輛爲一個點(無論他們是否在接近或沒有)。上述點我謹提請車輛名稱標籤(易讀性,你可以繪製LABL後面的不透明或半透明的背景,否則邊框的對比色標籤)。

對於靠近的車輛,我會繪製一個單一的大點,並有上面的名稱列表,否則,如果這使地圖或其他車輛模糊不清,則會有一條線從點發出到一個分線盒與地名列表不那麼突出的部分地圖。

例如爲:

       V66 
       V12   V07 
V23    ·   V22 
·       • 
      V78    • 
      ·    | 
         +-----+ 
         | V09 | 
         | V34 | 
         +-----+ 
0

的常用方式來做到這一點是與替代標記。如果通常的標記是推針圖像,則在同一位置使用兩個頂針爲2的推針。另一種方法是將第一個標記放在確切位置上,並將稍後的標記放在「下一個」的某個定義的「下一個」標記上。以您的車輛爲例:在距離道路一定距離處放置第二個車輛,根據當前比例確保視覺分離。用於測試是否使用替代放置的排除矩形現在被拉長以覆蓋第二個標記,因此當放置第三輛車時,它將放置在前兩個標記之後。

+0

嘿,好名字。 :) – ErikE 2010-10-13 22:59:26

0

Google條款是label placement。一般而言,這是一個完整的研究領域,並沒有真正好的通用解決方案,但對於這樣的特定情況,有幾種合適的實現。 Wikipedia/Automatic label placement也是一個很好的起點。根據你的圖像,你期望很少有重疊的標籤,那麼你可以去一個簡單的貪婪算法優化速度。