Rails6にて開発中です
##本題
住所を投稿するページにてGoogleのmapの表示を erbファイルにscriptで記述しおりました
new.html.erb
ruby
1 <script> 2 /* 3 mapを関数の外で定義(codeAddressでも使うため) 4 geocoderを用意 5 */ 6 7 let map 8 let geocoder 9 10 function initMap(){ 11 // geocoderを初期化 12 geocoder = new google.maps.Geocoder() 13 14 map = new google.maps.Map(document.getElementById('map'), { 15 center: {lat: 35.710063, lng: 139.810700}, 16 zoom: 8 17 }); 18 } 19 20 function codeAddress(){ 21 // 入力を取得 22 let inputAddress = document.getElementById('address').value; 23 24 // geocodingしたあとmapを移動 25 geocoder.geocode( { 'address': inputAddress}, function(results, status) { 26 if (status == 'OK') { 27 // map.setCenterで地図が移動 28 map.setCenter(results[0].geometry.location); 29 30 // google.maps.MarkerでGoogleMap上の指定位置にマーカが立つ 31 var marker = new google.maps.Marker({ 32 map: map, 33 position: results[0].geometry.location 34 }); 35 } else { 36 alert('Geocode was not successful for the following reason: ' + status); 37 } 38 }); 39 } 40 </script>
この記述をJavaScriptファイルに分けようと考えました(可読性のため)
new.html.erbに記述してあった
<script>から</script>までを消しruby
1<%= javascript_pack_tag 'photo/map' %>
これを記述
そしてJavaScriptファイルに
<script>から</script>以外を記述javascript > packs > photo > map.js
JavaScript
1 2/* 3mapを関数の外で定義(codeAddressでも使うため) 4geocoderを用意 5*/ 6 7let map 8let geocoder 9 10function initMap(){ 11 // geocoderを初期化 12 geocoder = new google.maps.Geocoder() 13 14 map = new google.maps.Map(document.getElementById('map'), { 15 center: {lat: 35.710063, lng: 139.810700}, 16 zoom: 8 17 }); 18} 19 20function codeAddress(){ 21 // 入力を取得 22 let inputAddress = document.getElementById('address').value; 23 24 // geocodingしたあとmapを移動 25 geocoder.geocode( { 'address': inputAddress}, function(results, status) { 26 if (status == 'OK') { 27// map.setCenterで地図が移動 28 map.setCenter(results[0].geometry.location); 29 30// google.maps.MarkerでGoogleMap上の指定位置にマーカが立つ 31 var marker = new google.maps.Marker({ 32 map: map, 33 position: results[0].geometry.location 34 }); 35 } else { 36 alert('Geocode was not successful for the following reason: ' + status); 37 } 38 }); 39}
読み込むように
javascript > packs > applocation.js
applicationjs
1require("./photo/map")
を記述しました
しかし、地図が表示されないため
違う記述があるのか…
皆様のお力を貸しください
他のJavaScriptは動いているのでerbに<script>で記述したものをjavascriptに移動させて、表示させる記述が違うのかな…と感じていますが
わからずです…
このようになっておりました
initMapがないと言われているので調査中です
あなたの回答
tips
プレビュー