2013-04-19 71 views
0

我有以下代碼,它應該在更改多邊形形狀時觸發警報。此警報僅在形狀更改兩次後纔會顯示。意思是,我必須在觸發事件之前調整兩次形狀。谷歌地圖APIV3監聽器set_at直到第二次不會觸發

任何有關可能導致此行爲的想法?

function drawListener(drawingManager) { 
    var coord_listener = google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) { 

     var coordinates = (polygon.getPath().getArray()); //get 
     var bounds = new google.maps.LatLngBounds(); 
     var people = []; 


     google.maps.event.addListener(polygon.getPath(), 'set_at', function() { //check to see if the item has been changed //THIS ONLY GETS CALLED AFTER POLYGON HAS BEEN CHANGED TWICE 
      alert('changed'); 
     }); 
}); 

回答

1

我發現我的答案是:我必須使用 'insert_at' 除了 'set_at'

google.maps.event.addListener(polygon.getPath(), 'set_at', function() { 
     alert('changed'); 
    }); 

google.maps.event.addListener(polygon.getPath(), 'insert_at', function() { 
     alert('also changed'); 
    }); 

感謝。

+0

請注意這裏:http://stackoverflow.com/a/15833288/913295。 –

+0

如果你對路徑做任何事情,它會再次將它稱爲火災事件功能!事件函數被傳遞(ev,obj)。我所做的是設置obj.updating = true。如果我改變路徑(它正在被監視),並且試圖觸發事件函數AGAIN,如果obj.updating,則返回。在事件函數結束時,我設置了obj.updating = false。 –

+0

由於我無法編輯我的評論,另一個評論提到,更好地使用getPath()而不是我之前提到的路徑。 –