私は Gmaps4rails を使用しており、かなりうまく機能していますが、少し困惑しています。おそらく私の初心者のJSスキルが原因です。私はさまざまな質問の例に従おうとしていますが、どこが間違っているのかわかりません。
マップが読み込まれると、Gmaps.map.callback が正常に動作し、マップが読み込まれ、マーカーをクリックするとリスナー イベントが発生します。
私からしてみれば:
<% content_for :scripts do %>
<script type="text/javascript">
Gmaps.map.callback = function(){
for(var i = 0; i < Gmaps.map.markers.length; i++){
marker = Gmaps.map.markers[i];
google.maps.event.addListener(marker.serviceObject, 'click',
(function(marker){
return function(){
alert(marker.id);
}
})(marker)
)
}
}
</script>
<% end %>
これは、コントローラーで作成された json からのマーカー ID でアラートを出します。
次に、地図の位置を更新してマーカーを置き換える検索機能を用意します。これは ajax 呼び出しで呼び出されています。したがって、コントローラー .js.erb でこれを行います。
Gmaps.map.replaceMarkers(<%= raw @json %>);
すべて問題ないように見えます。マップには新しいマーカーが読み込まれていますが、偶数リスナーがマーカーで機能しません。
私の質問は、これらの新しいマーカーにクリック イベントのリスナーを持たせるにはどうすればよいかということです。どうにかしてコールバックをリセットする必要がありますか? マップが読み込まれる前に実行する必要があると思いますが、この場合はマップをリロードせず、マーカーを置き換えるだけです。