Rails Google Map 2回め表示しないエラー
Railsにて2回めにGoogleMAPを表示しなくなるエラーがでた。
onlodadで呼ぶだけで解決。
普通はこのように記載する。
window.onload = function() { initMap(); }
しかし、onloadは、最後に代入された関数が上書きされて実行される。
調査した結果、JQueryとAPIで2回呼ばれていた。 そこで、addEventListenerを利用。 これだと複数回呼ばれても、問題ない。
window.addEventListener('load', function() { initMap(); }); function initMap() { var map = new google.maps.Map(document.getElementById('map'), { zoom: 10, center: {lat: <%= @user.lat %> , lng: <%= @user.lng %>} }); var myLatLng = {lat: <%= @user.lat %> , lng: <%= @user.lng %>}; marker = new google.maps.Marker({ position: myLatLng }); marker.setMap(map); markers = [] markers.push(marker) var geocoder = new google.maps.Geocoder(); document.getElementById('submit').addEventListener('click', function() { geocodeAddress(geocoder, map); }); };
onloadは、DOMのレンダリングや、画像などの関連リソースが全て読み込まれてから実行される。
GoogleMAP APIは、読み込んだ時点で、intMap関数が呼ばれる。
そのために、呼び出しのタイミングが多少おかしくなっていたと思われる。