2010-03-30 231 views
0

我想製作「WiFi地圖」,我有這樣做的問題,我想有3個圖標OPEN/WEP/WPA,以及很多標記,每個標記與自己的infowindow,只有1 infowindow頂部,所以當我點擊#1然後#2然後#1將隱藏。 如果我將有XXXX標記在地圖上縮放時會出現問題,有可能使它變得像是在一個地方有多少標記全部不會縮小顯示,而是放大縮小。谷歌地圖api v3 - 多個標記,多個infowindows,3個圖標

我有關於MySQL數據庫網絡的所有信息,所以在PHP中將很容易顯示它像在官方谷歌地圖文檔/ v3/overlays.html#ComplexIcons <教程 - 所以按照這個可以我有例如

var nodes = [ 
['WKKOZ',50.192843,18.967801,nodewep,1], 
['airlive',50.193056,18.967974,nodeopen,2], 
['Zurawia-3',50.198398,18.974723,nodeopen,3], 
['siec dol',50.19303,18.96796,nodewep,4], 
['KP_8_1',50.193092,18.96801,nodewep,5], 
['Natalia',50.19286,18.967812,nodewpa,6], 
['Z104',50.192591,18.967588,nodewep,7], 
['D2',50.192499,18.96876,nodewep,8], 
['Niesia',50.192474,18.968239,nodewpa,9], 
['boolean',50.192539,18.967545,nodewpa,10], 
['neostrada_0d65',50.192179,18.96758,nodewep,11], 
['neostrada_2d38',50.192216,18.96761,nodewep,12], 
['Belkin_G_Wireless_9B7BF7',50.192191,18.969261,nodeopen,13], 
['Trans_FijPn',50.1939,18.979565,nodeopen,14], 
['dlinklis',50.193113,18.968024,nodewpa,15] 

請幫我:)

BTW:我的MySQL數據庫有格式http://wklej.to/7Puw/html

回答

1

我想你是詢問如何有大量地圖上的標記,其獲得更高的隱藏的動物園米級別。這被稱爲標記聚類。

有實現在客戶端集羣,並且非常容易集成到現有的混搭一些JavaScript庫:

  • MarkerClusterer - 我used這對混搭,發現它易於集成,與一組不錯的默認圖標。
  • ClusterMarker - 我沒有使用過這個,但它看起來很實用。

你也可以閱讀blog post其越過各種替代方案或本blog post,其中討論了在服務器端集羣細節。

+0

THX,但「集羣」是我的問題只有一點:對 我仍然不知道如何使多個標記,多個信息窗口,3個圖標 我嘗試做代碼http://wklej.org/hash/ea86da22681 /關注「documentation/v3/overlays.html#ComplexIcons」並且不起作用;( – Adam 2010-03-30 21:14:41

1

我最近經歷了完全相同的問題,並在Sean Vieira的幫助下設法排除了大部分問題。

的這個問題的答案就在這裏: Display multiple markers on a map with their own info windows

爲您的方案的變化是,你只添加其他字段到你的數組中你指定的URL路徑到你想標記使用。

然後,當循環創建標記(從var marker = new google.maps.Marker起)時,您可以從數組中調用icon變量的值。

由於您只有三種圖標類型,並且我假設您將從數據庫填充記錄,因此您需要測試訪問點的類型,然後在該位置爲標記類型編寫相關的URL路徑(我是一個ASP,而不是一個PHP的人,所以藉口使用術語寫不正確)。

我的解決方案並不乾淨地處理infowindows。一旦他們被打開,他們將保持開放,除非用戶手動關閉。我已經看到了解決方案,因爲新的解決方案已經打開,但還沒有實施。

0

我知道這是一個老問題,但我有一個答案吧,我會寫它爲後人看:)

的信息窗口問題的解決方案可以很容易地解決。創建一個名爲currentWindow的全局變量。每當用戶按下標記時,eventlistener會檢查currentWindow = infoWindow。如果沒有,那麼關閉currentWindow並將其設置爲新的infowindow。純粹而簡單,只需記得打開新的infowindow。