前提・実現したいこと
railsでテニスコート検索アプリを作成中です。
コート情報の配列である@courtsオブジェクトをeach doを使ってそれぞれ表示させてます。
表示させたコート情報をクリックした時にそのコートのピンに移動させたいです。
コート情報を一覧で表示して、マップにピンを表示させるまでは実装できました。
発生している問題・エラーメッセージ
現状のコードだと最後に読み込まれた緯度経度をもとにPantoが作動してしまいます。
コート一覧でクリックしたコートオブジェクトの緯度経度を取得してPantoしたいです。
該当のソースコード
ruby
1#index.html.erb 2 <% @courts.each do |court|%> 3 <div class="index"> 4 <div class="court-info"> 5 <p class="txtm">コート名:<%=court.name %></p> 6 <p class="txtm">住所:<%=court.address %></p> 7 <input class="lat" name="latlng" type="hidden" value="<%= court.latitude %>"></input> 8 <input class="lng" name="latlng" type="hidden" value="<%= court.longitude %>"></input> 9 </div> 10 </div> 11 <%end%> 12 13 <script> 14 var map; 15 var marker = []; 16 var infoWindow = []; 17 var test = <%= @courts_m.to_json.html_safe %>; 18 19 var mapLatLng = new google.maps.LatLng({lat: test[0]['latitude'], lng: test[0]['longitude']}); // 緯度経度のデータ作成 20 21 map = new google.maps.Map(document.getElementById('sample'), { // #sampleに地図を埋め込む 22 center: mapLatLng, // 地図の中心を指定 23 zoom: 10 // 地図のズームを指定 24 }); 25 26 // マーカー毎の処理 27 for (var i = 0; i < test.length; i++) { 28 markerLatLng = new google.maps.LatLng({lat: test[i]['latitude'], lng: test[i]['longitude']}); // 緯度経度のデータ作成 29 marker[i] = new google.maps.Marker({ // マーカーの追加 30 position: markerLatLng, // マーカーを立てる位置を指定 31 map: map // マーカーを立てる地図を指定 32 }); 33 34 infoWindow[i] = new google.maps.InfoWindow({ // 吹き出しの追加 35 content: '<div class="sample">' + test[i]['name'] + '</div>' // 吹き出しに表示する内容 36 }); 37 38 markerEvent(i); // マーカーにクリックイベントを追加 39 } 40 41 // マーカーにクリックイベントを追加 42 function markerEvent(i) { 43 marker[i].addListener('click', function() { // マーカーをクリックしたとき 44 infoWindow[i].open(map, marker[i]); // 吹き出しの表示 45 }); 46 } 47 48 $('.court-info').on('click', function() { 49 lat = $('.lat').val(); 50 lng = $('.lng').val(); 51 toTokyo(lat,lng); 52 }); 53 54 function toTokyo(lat,lng) { 55 map.panTo(new google.maps.LatLng(lat,lng)); 56 } 57 58 </script>
試したこと
コード記載のように、inputタグをhiddenにすることで変数を置いてますが、これだとどのコートをクリックしても最後のコートに移動してしまいます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/03/18 21:55