質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

572閲覧

rails googlemap クリックしたオブジェクト毎のピンに移動したい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/03/18 07:57

前提・実現したいこと

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にすることで変数を置いてますが、これだとどのコートをクリックしても最後のコートに移動してしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

js

1$( '.court-info' ).on( 'click', function() { 2 toTokyo( $( '.lat', this ).val(), $( '.lng', this ).val()); 3} );

投稿2019/03/18 17:34

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/03/18 21:55

回答ありがとうございます。 ``` $('li.court-info').on('click',function(){ var index = $('li.court-info').index(this); lat = test[index]['latitude'] lng = test[index]['longitude'] move(lat,lng); }); ``` とすることで解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問