0

我所試圖做的是類似這樣(how to set a zoom level using Gmap4rails
而是東西:gmaps4rails V2多邊形的點擊事件

google.maps.event.addListenerOnce(Gmaps.map.getMapObject(), 'idle', function(){} 

我想是這樣

google.maps.event.addListenerOnce(polygon, 'click', function(){} 

_
所以我試圖做一個實驗:

handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){ 
     polygon = handler.addPolygons(<%= raw @myhash.to_json %>); 
} 
google.maps.event.addListener(polygon, "click", function(evt) { 
     alert("hello!"); 
}); 

但它不工作....

所以我的問題是,我將如何添加一個多邊形偵聽器?

回答

0

它的可變範圍和實際谷歌對象的事gmaps4rails代理對象中生活:

handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){ 
    var polygons = handler.addPolygons(<%= raw @myhash.to_json %>); 

    for (var i=0;i < polygons.length; i++){ 
    var polygon = polygons[i]; 
    google.maps.event.addListener(polygon.getServiceObject(), "click", function(evt) { 
     alert("hello!"); 
    }); 
    } 
} 
+0

這個作品,非常感謝! – ralphie02

1

文檔說google.maps.event.addListenergoogle.maps.event.addListenerOnce只接受單個對象作爲它們的第一個參數,所以markers的數組可能不會工作。您需要爲每個標記調用一次addListener。東西大致如下:

handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){ 
    markers = handler.addMarkers(<%= raw @myhash.to_json %>); 

    for (marker in markers) { 
     google.maps.event.addListener(marker, "click", function(evt) { 
      alert("hello!"); 
     }); 
    } 
} 

應該可以正常工作。

+0

其實我想爲我的多邊形監聽器,遺憾的混亂。我會編輯我的問題.... – ralphie02

+0

我編輯了這個問題,我希望現在更清楚,如果你知道答案或有一個想法,請讓我知道。謝謝 – ralphie02