2016-09-19 16 views
0

Googleマップのapiで提供されているイベントリスナーに問題があります。事は、いくつかのイベントが実行され、いくつかは実行されないということです。私は、ポリゴンオーバーレイが完了した後にリスナーを設定するsetListeners関数を持っています。私がフックしたいイベントは、set_at、insert_at、remove_at、clickです。今すぐクリックイベントは正しく実行されますが、他のイベントは実行されません。私は何が間違っていますか?コードは次のとおりです。Javascript google maps描画イベント

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); 
      }) 
     } 
} 

ありがとうございます! google.maps.eventでリスナーを追加

+0

が定義されているself.drost? 'drost'がポリゴンであると仮定すると、Googleマップのイベント 'overlaycomplete'にリスナーを追加しようとしましたか? https://developers.google.com/maps/documentation/javascript/drawinglayer – JorgeObregon

+0

@JorgeObregonはい、self.drostはe.overlayのoverlaycompleteイベントで初期化されます。また、私は、オーバーレイコンプリートコールバックの終わりにsetListenersを呼び出します。 –

答えて

1

試してみてください。

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

btw、この回答はコメントでもありますが、コードスニペットはGoogleドキュメント – JorgeObregon

+0

へのリンクだけではありません。この方法も試しましたが、これもうまくいきません。 ifの直後にコンソールログを追加すると、console.log(self.drost)のようにGoogleマップのポリゴンオブジェクトが記録されます。しかし、イベントを発生させると、イベントリスナーのコールバックは実行されません。しかし、努力のために+1! :) –

関連する問題