質問編集履歴

4

gem geocoderを削除

2020/10/12 00:46

投稿

kanako417
kanako417

スコア1

test CHANGED
@@ -1 +1 @@
1
- Googleのgeocoder APIで経度と緯度がDB保存されない
1
+ Googleのgeocoding APIで詳細ページ地図表示
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  ```gemfile
16
16
 
17
- gem 'geocoder'
17
+ gem 'geocoder' =>今回の実装では使用しないので削除しました。
18
18
 
19
19
  gem 'gmaps4rails'
20
20
 
@@ -198,15 +198,21 @@
198
198
 
199
199
 
200
200
 
201
- API keyを更新して、環境変数に新たに設定。
201
+ - API keyを更新して、環境変数に新たに設定。
202
202
 
203
203
  API KEYも環境変数に入れて、rails cで環境変数を確認したところ、きちんとAPI keyが呼び出されます。
204
204
 
205
+
206
+
205
- HTTPリファラーを制限。
207
+ - HTTPリファラーを制限。
206
208
 
207
209
  localhost:3000/*
208
210
 
209
- ・modelファイル内の記述、after_validation :geocode から before_save :geocode変更。
211
+ 本番環境のリファラーも追加すること忘れず
212
+
213
+
214
+
215
+
210
216
 
211
217
 
212
218
 
@@ -214,7 +220,7 @@
214
220
 
215
221
  ・geocoder APIを新たに利用。
216
222
 
217
- ・認証情報のAPIの制限をgeocoder APIと Maps Javascript APIのみに制限。
223
+ ・認証情報のAPIの制限をgeocoding APIと Maps Javascript APIのみに制限。
218
224
 
219
225
  ・gonを使用して、ビューファイルで経度緯度を読み込めるように、controllerとビューのJS内の記述を変更。
220
226
 
@@ -224,8 +230,6 @@
224
230
 
225
231
  ### 補足情報(FW/ツールのバージョンなど)
226
232
 
227
- gem 'geocoder' ~>(1.6.3)
228
-
229
233
  gem 'rails', '~> 6.0.0'
230
234
 
231
235
  gem 'mysql2', '>= 0.5.3'

3

タイトルの変更

2020/10/12 00:46

投稿

kanako417
kanako417

スコア1

test CHANGED
@@ -1 +1 @@
1
- airbnbのように、投稿毎にgoogle map APIを使用しての地図表示出来ない
1
+ Googleのgeocoder APIで経度と緯度DBに保存されない
test CHANGED
@@ -26,6 +26,8 @@
26
26
 
27
27
 
28
28
 
29
+ 使用している、APIは、maps javascript APIと Geocoding APIの二つです。
30
+
29
31
 
30
32
 
31
33
  ### 実現したいこと

2

google geocoderAPIを利用することに変更。

2020/09/29 06:52

投稿

kanako417
kanako417

スコア1

test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,10 @@
6
6
 
7
7
  **最初の投稿以降、他の詳細ページにはGoogle Mapが表示されません。**
8
8
 
9
+ 1件目の投稿以降、データベースに経度緯度の値も保存されません、、。
10
+
11
+
12
+
9
13
  使用しているgemは以下です。(開発環境は補足情報に記載しています。)
10
14
 
11
15
  ```gemfile
@@ -50,81 +54,13 @@
50
54
 
51
55
  ```console
52
56
 
53
- oe {message: "initMap is not a function", name: "InvalidValueError", stack: "Error↵ at new oe (https://maps.googleapis.com/m…khA-cvzts98u4gW1EZtxGCZA&callback=initMap:144:123"}message: "initMap is not a function"name: "InvalidValueError"stack: "Error↵ at new oe (https://maps.googleapis.com/maps/api/js?key=APIKEY&callback=initMap:70:72)↵ at Object._.pe (https://maps.googleapis.com/maps/api/js?key=APIKEY&callback=initMap:70:182)↵ at Wj (https://maps.googleapis.com/maps/api/js?key=APIKEY&callback=initMap:144:238)↵ at https://maps.googleapis.com/maps/api/js?key=APIKEY&callback=initMap:144:123"__proto__: Error
54
-
55
- _proto__: Error
56
-
57
- constructor: ƒ (a)
58
-
59
- Xo: ƒ (d,e,f)
60
-
61
- arguments: null
62
-
63
- caller: null
64
-
65
- length: 3
66
-
67
- name: ""
68
-
69
- prototype: {constructor: ƒ}
70
-
71
- __proto__: ƒ ()
72
-
73
- apply: ƒ apply()
74
-
75
- arguments: (...)
76
-
77
- bind: ƒ bind()
78
-
79
- call: ƒ call()
80
-
81
- caller: (...)
82
-
83
- constructor: ƒ Function()
84
-
85
- length: 0
86
-
87
- name: ""
88
-
89
- toString: ƒ toString()
90
-
91
- Symbol(Symbol.hasInstance): ƒ [Symbol.hasInstance]()
92
-
93
- get arguments: ƒ ()
94
-
95
- set arguments: ƒ ()
96
-
97
- get caller: ƒ ()
98
-
99
- set caller: ƒ ()
100
-
101
- __proto__: Object
102
-
103
- [[FunctionLocation]]: <unknown>
104
-
105
- [[Scopes]]: Scopes[0]
106
-
107
- [[FunctionLocation]]: js?key=APIKEY&callback=initMap:32
108
-
109
- [[Scopes]]: Scopes[3]
110
-
111
- md: {name: "Error", message: "", constructor: ƒ, toString: ƒ}
112
-
113
- arguments: null
114
-
115
- caller: null
116
-
117
- length: 1
118
-
119
- name: "oe"
120
-
121
- prototype: Error {constructor: ƒ}
122
-
123
- __proto__: ƒ ()
124
-
125
- [[FunctionLocation]]: js?key=APIKEY&callback=initMap:70
126
-
127
- [[Scopes]]: Scopes[2]
57
+ - InvalidValueError: setCenter: not a LatLng or LatLngLiteral with finite coordinates: in property lat: not a number
58
+
59
+
60
+
61
+ - InvalidValueError: setPosition: not a LatLng or LatLngLiteral: in property lat: not a number
62
+
63
+
128
64
 
129
65
  ```
130
66
 
@@ -156,27 +92,31 @@
156
92
 
157
93
 
158
94
 
159
- def show
95
+ def show
160
96
 
161
97
  @lodge = Lodging.find(params[:id])
162
98
 
99
+ gon.lodge = @lodge
100
+
163
101
  end
164
102
 
165
103
  ```
166
104
 
167
105
 
168
106
 
107
+
108
+
169
- google map APIgem 'geocoder'を使用して
109
+ **google map APIgem 'geocoder'・googleのgeocoder APIを使用して**
170
110
 
171
111
  投稿ページに都道府県と市区町村までを入力させ、:prefecture_cityとしています。
172
112
 
173
-
113
+ railsのコールバックである、before_saveを利用して、登録と更新のどちらの場合にも同じ処理を行えるように記述を変更しました。
174
114
 
175
115
  ```model
176
116
 
177
117
  geocoded_by :prefecture_city
178
118
 
179
- after_validation :geocode
119
+ beore_save :geocode
180
120
 
181
121
  ```
182
122
 
@@ -216,11 +156,11 @@
216
156
 
217
157
  var marker;
218
158
 
219
- var pin = {lat: <%= @lodge.latitude %>, lng: <%= @lodge.longitude %>};
159
+ var pin = { lat: gon.lodge.latitude, lng: gon.lodge.longitude };
220
160
 
221
161
  function initMap() {
222
162
 
223
-
163
+ geocoder = new google.maps.Geocoder()
224
164
 
225
165
  var map = new google.maps.Map(document.getElementById('map'), {
226
166
 
@@ -264,7 +204,19 @@
264
204
 
265
205
  localhost:3000/*
266
206
 
207
+ ・modelファイル内の記述を、after_validation :geocode から before_save :geocodeに変更。
208
+
209
+
210
+
211
+ ### 変更点・改善点
212
+
267
- ライブラリ全てを有効化し、APIの制限無し設定
213
+ geocoder APIを新た利用
214
+
215
+ ・認証情報のAPIの制限をgeocoder APIと Maps Javascript APIのみに制限。
216
+
217
+ ・gonを使用して、ビューファイルで経度緯度を読み込めるように、controllerとビューのJS内の記述を変更。
218
+
219
+
268
220
 
269
221
 
270
222
 

1

タグの変更

2020/09/29 06:49

投稿

kanako417
kanako417

スコア1

test CHANGED
File without changes
test CHANGED
File without changes