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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

JavaScript

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Q&A

1回答

3370閲覧

【Gmaps4Rails】マーカー位置から座標取得と保存方法を知りたい

besuko

総合スコア16

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

JavaScript

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

0グッド

0クリップ

投稿2016/07/14 07:43

編集2022/01/12 10:55

##環境
Ruby 2.1.0
Rails 4.1.0
geocoder 1.3.7
gmaps4rails 2.1.2

##GoogleMapsでマーカー位置座標の取得
Railsで店舗検索サイトを作成しています。
GoogleMaps表示にはgmaps4railsを用いています。

店舗情報は店舗が直接入力出来るようにしています。
gemgeocoderを用いて入力してもらった住所から緯度・経度を自動で取得し、GoogleMapsにマーカーを落とすようにしましたが実際の位置とはズレている事が多いです。

位置にズレがある場合は編集ページ(shop/edit.html.erb)で補正する方法はありませんでしょうか。
GoogleMapsに表示されるマーカーを直接動かして、その位置の緯度・経度を取得しデータベースに保存できればベストだと考えています。

マーカー位置をドラッグでの移動は出来ましたが、緯度・経度の再取得とデータベースでの更新方法が分からずにいます。

なんとなく、更新時もgeocoderが作動して住所から自動で取得された座標が反映されてしまっている気もしますが。。

shops_contrller.rb def edit @shop = Shop.find(params[:id]) @hash = Gmaps4rails.build_markers(@shop) do |shop, marker| marker.lat shop.latitude marker.lng shop.longitude marker.infowindow shop.name marker.json({ title: shop.name }) end respond_with(@shop) end
view/shops/edit.html.erb <script type="text/javascript"> handler = Gmaps.build('Google'); //データベースに保存されている座標を取得 handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){ var markers = handler.addMarkers(<%= raw @hash.to_json %>,{draggable: true}); handler.bounds.extendWith(markers); handler.fitMapToBounds(); }); //add markers to original json _.each(<%= raw @hash.to_json %>, function(json, index){ json.marker = markers[index]; }); //add dragend event to markers, triggered when you drop them _.each(<%= raw @hash.to_json %>, function(json){ google.maps.event.addListener(json.marker.getServiceObject(), "dragend", function(event) { var lat = event.latLng.lat(); var lng = event.latLng.lng(); console.log('Marker with id: ' + json.id + ' dropped hat lat: ' + lat + ' and lng: ' + lng) }); }); </script>

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

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

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

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

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

guest

回答1

0

gmaps4rails を使用したドラッグ後のマーカーを取得するには下記URLの手法があるようです。

【ruby on rails - Create Draggable Markers and save them in the Database - Stack Overflow】
http://stackoverflow.com/questions/22185404/create-draggable-markers-and-save-them-in-the-database?answertab=active#tab-top

投稿2016/07/14 16:38

kei344

総合スコア69364

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

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

besuko

2016/07/15 08:45

kei344様 早々にご回答頂き有難うございます! 早速URLの内容を元にJavaScriptを訂正致しました。 ですが位置情報は更新されずにおります。。 もし分かれば間違い箇所を教えて頂けませんでしょうか。。 ``` view/shops/edit.html.erb <script type="text/javascript"> handler = Gmaps.build('Google'); //データベースに保存されている座標を取得 handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){ var markers = handler.addMarkers(<%= raw @hash.to_json %>,{draggable: true}); handler.bounds.extendWith(markers); handler.fitMapToBounds(); }); //add markers to original json _.each(<%= raw @hash.to_json %>, function(json, index){ json.marker = markers[index]; }); //add dragend event to markers, triggered when you drop them _.each(<%= raw @hash.to_json %>, function(json){ google.maps.event.addListener(json.marker.getServiceObject(), "dragend", function(event) { var lat = event.latLng.lat(); var lng = event.latLng.lng(); console.log('Marker with id: ' + json.id + ' dropped hat lat: ' + lat + ' and lng: ' + lng) }); }); </script>
kei344

2016/07/15 09:00

gmaps4rails の環境が手元に無いため、どのようなエラーが起こっているとか、指定がおかしいなどがわかりません。 とりあえず markers には marker が配列で入っており、それぞれを marker.getServiceObject() することによってGoogleMapsの marker オブジェクトが取得できるはずなので、クリックイベントでも付けて試してみてください。 http://stackoverflow.com/questions/24004108/googlemaps4rails-not-centering-first-marker?answertab=active#tab-top
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問