Rails Google Map 2回め表示しないエラー

Railsにて2回めにGoogleMAPを表示しなくなるエラーがでた。

onlodadで呼ぶだけで解決。

f:id:happy_teeth_ago:20180906132603p:plain

普通はこのように記載する。

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関数が呼ばれる。

そのために、呼び出しのタイミングが多少おかしくなっていたと思われる。