2011-05-17 70 views
1

我正在開發一個使用gmaps4rails(https://github.com/apneadiving/Google-Maps-for-Rails)的應用程序。我想添加一個事件監聽器到標記,以便它在地圖(以及在地圖上顯示信息窗口)旁邊創建一個可視化。是否有可能使用gmaps4rails爲每個標記添加事件偵聽器?使用gmaps4rails將標記添加到標記

回答

5

當然這是可能的。

您應該在gmaps4rails_callback javascript函數中編寫代碼以確保在設置所有內容時執行它。

然後循環的markers JS變量:Gmaps4Rails.markers

每個標記的此數組中的屬性有:

  • 經度

  • 緯度

  • google_object含有谷歌marker

這就是說你可以做任何你想做的事情。

作爲一個附註,地圖也可以做Gmaps4Rails.map

一般來說,閱讀gmaps4rails.js文件,它有很好的文檔記錄(我希望!)。

編輯:

您在評論中解釋的問題是奇怪的,它完美對我來說,當我使用:

google.maps.event.addListener(Gmaps4Rails.markers[0].google_object, 'click', function(object){ alert("hello"); }); 

我猜你應該嘗試使用更傳統的for循環,如:

<script type="text/javascript"> 
function gmaps4rails_callback() { 
    function say_yo(arg) { return function(){alert('yo '+ arg + '!');};}; 
    for (var i = 0; i < Gmaps4Rails.markers.length; ++i) { 
     google.maps.event.addListener(Gmaps4Rails.markers[i].google_object, 'click', say_yo(i)); 
    } 
} 
</script> 
+0

我試圖 <腳本類型= 「文本/ JavaScript的」> \t功能gmaps4rails_callback() \t { \t \t爲(在Gmaps4Rails.markers米) \t \t { \t \t \t google.maps.event.addListener(米, '點擊',函數(對象){ \t \t \t警報( 「你好」 ); \t \t \t}); \t \t} \t} 但從未標記顯示在地圖上。我試圖把在HTML腳本的頭部這段代碼/在身體的開始/在身體的結束,但所有這些都沒有工作.. – hailey 2011-05-18 10:51:06

+0

閱讀我在我的答案中寫道,你可以通過執行訪問谷歌標記:m.google_object – apneadiving 2011-05-18 10:57:07

+0

我用m.google_object替換m:現在標記顯示在地圖上,但它似乎是偵聽器未添加到標記 - 它仍然只顯示從模型生成的信息窗口.. – hailey 2011-05-18 12:38:52