2016-09-19 56 views
0

我有一個谷歌地圖API提供的事件監聽器的問題。事情是,有些事件運行,有些不是。我有一個setListeners函數,用於在多邊形疊加完成後設置偵聽器。我想要掛鉤的事件是:set_at,insert_at,remove_at並單擊。現在點擊事件正確運行,但其他事件沒有正確運行。我能做什麼錯?這裏是代碼:Javascript谷歌地圖繪畫事件

self.setListeners = function() { 
     //this click event runs correctly 
     google.maps.event.addListener(self.map, 'click', function (e) { 
      self.clearSelection(); 
     }) 

     console.log(self.drost); 
     if (typeof self.drost != 'undefined') { 
      self.drost.addListener('set_at', function (e) { 
       console.log(e.overlay); 
      }); 
      self.drost.addListener('insert_at', function (e) { 
       console.log(e.overlay); 
      }); 
      self.drost.addListener('remove_at', function (e) { 
       console.log(e.overlay); 
      }); 
      //this click also runs correctly 
      self.drost.addListener('click', function(e){ 
       self.setSelection(self.drost); 
      }) 
     } 
} 

在此先感謝!

+0

被self.drost定義?假設'drost'是多邊形,你有沒有嘗試在google maps事件'overlaycomplete'上添加監聽器? https://developers.google.com/maps/documentation/javascript/drawinglayer – JorgeObregon

+0

@JorgeObregon是的,self.drost在e.overlay的overlaycomplete事件中被初始化。另外,我在overlaycomplete回調結束時調用setListeners。 –

回答

1

嘗試增加聽者google.maps.event:

google.maps.event.addListener(self.drost, 'set_at', function() { 
    console.log('it works!'); 
}); 
+0

順便說一句,這個答案也可以是一個評論,但一段代碼將幫助你不僅僅是一個鏈接到谷歌文檔 – JorgeObregon

+0

我試過這種方法,這也行不通。如果我在if之後添加一個控制檯日誌,就像console.log(self.drost)一樣,它會記錄一個google maps多邊形對象。但是,當我發起事件時,事件監聽器回調不會運行。但+1的努力! :) –