teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

誤字を訂正しました。

2016/07/15 09:38

投稿

besuko
besuko

スコア16

title CHANGED
File without changes
body CHANGED
@@ -1,21 +1,24 @@
1
1
  ##環境
2
2
  Ruby 2.1.0
3
3
  Rails 4.1.0
4
+ geocoder 1.3.7
4
5
  gmaps4rails 2.1.2
5
6
 
7
+
6
8
  ##GoogleMapsでマーカー位置座標の取得
7
9
  Railsで店舗検索サイトを作成しています。
8
10
  GoogleMaps表示には```gmaps4rails```を用いています。
9
11
 
10
12
  店舗情報は店舗が直接入力出来るようにしています。
11
- gem```geocoder```を用いて入力してもらった住所から緯度・経度を取得し、GoogleMapsにマーカーを落とすようにしましたが実際の位置とはズレている事が多いです。
13
+ gem```geocoder```を用いて入力してもらった住所から緯度・経度を自動で取得し、GoogleMapsにマーカーを落とすようにしましたが実際の位置とはズレている事が多いです。
12
14
 
13
- 位置にズレがある場合は入力画面、もしくは確認画面で補正する方法はありませんでしょうか。
15
+ 位置にズレがある場合は編集ページ(shop/edit.html.erb)で補正する方法はありませんでしょうか。
14
- その際表示GoogleMaps上でマーカーを直接動かして頂き、その位置の緯度・経度を取得しデータベースに保存できればベストだと考えています。
16
+ GoogleMapsに表示されるマーカーを直接動かして、その位置の緯度・経度を取得しデータベースに保存できればベストだと考えています。
15
17
 
16
- マーカー位置をドラッグでの移動は出来ましたが、際の座標取得方法が分からずにいます。
18
+ マーカー位置をドラッグでの移動は出来ましたが、緯度・経度取得とデータベースでの更新方法が分からずにいます。
17
- 座標の取得と、取得した座標をデータベースへの保存方法を教えて頂けませんでしょうか。
18
19
 
20
+ なんとなく、更新時も```geocoder```が作動して住所から自動で取得された座標が反映されてしまっている気もしますが。。
21
+
19
22
  ```
20
23
  shops_contrller.rb
21
24
  def edit

1

教えて頂きました解答例を元にedit\.html\.erbの内容を訂正致しました→【ruby on rails - Create Draggable Markers and save them in th

2016/07/15 09:38

投稿

besuko
besuko

スコア16

title CHANGED
@@ -1,1 +1,1 @@
1
- 【Gmaps4Rails】マーカー位置から座標取得と保存
1
+ 【Gmaps4Rails】マーカー位置から座標取得と保存方法を知りたい
body CHANGED
@@ -31,17 +31,28 @@
31
31
  ```
32
32
 
33
33
  ```
34
- shops/show.html.erb
34
+ view/shops/edit.html.erb
35
- <div style='width: 800px;'>
35
+ <script type="text/javascript">
36
+ handler = Gmaps.build('Google');
37
+ //データベースに保存されている座標を取得
36
- <div id="map" style='width: 800px; height: 400px;'></div>
38
+ handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
39
+ var markers = handler.addMarkers(<%= raw @hash.to_json %>,{draggable: true});
40
+ handler.bounds.extendWith(markers);
37
- </div>
41
+ handler.fitMapToBounds();
42
+ });
38
43
 
39
- <script type="text/javascript">
40
- handler = Gmaps.build('Google');
44
+ //add markers to original json
41
- handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
42
- markers = handler.addMarkers(<%=raw @hash.to_json %>,{draggable: true});
45
+ _.each(<%= raw @hash.to_json %>, function(json, index){
43
- handler.bounds.extendWith(markers);
44
- handler.fitMapToBounds();
46
+ json.marker = markers[index];
45
- });
47
+ });
48
+
49
+ //add dragend event to markers, triggered when you drop them
50
+ _.each(<%= raw @hash.to_json %>, function(json){
51
+ google.maps.event.addListener(json.marker.getServiceObject(), "dragend", function(event) {
52
+ var lat = event.latLng.lat();
53
+ var lng = event.latLng.lng();
54
+ console.log('Marker with id: ' + json.id + ' dropped hat lat: ' + lat + ' and lng: ' + lng)
55
+ });
56
+ });
46
- </script>
57
+ </script>
47
58
  ```