質問編集履歴

2

質問内容の復元

2017/01/13 04:21

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,17 +1,239 @@
1
1
  ###前提・実現したいこと
2
2
 
3
-
3
+ googleMapを活用して移動経路の記録をマップ上で行いたいと考えています。
4
+
5
+ 現時点では、geoLocation(watchPosition)を活用して位置情報を常に追跡し、マップに表示させています。
4
6
 
5
7
  googleMapを活用して移動経路の表示をしたいです。
6
8
 
7
-
9
+ 今悩んでいることは、サーバーへの位置情報データの格納方法と、**移動経路を線で結ぶことです**。
10
+
8
-
11
+ 線を結んでいくタイミングは、「移動するごとに常に線を表示」または「位置情報をまとめて最後に線を結ぶ」どちらでも構いません。初心者でも理解が早いほうが嬉しいです。
12
+
9
-
13
+ Polylineを活用すると予想していますが、もっとふさわしいものがあれば教えていただきたいです。
14
+
10
-
15
+ サンプルや、参考になるページ等ご存じでしたらお願いします。
11
-
12
16
 
13
17
  ###該当のソースコード
14
18
 
15
-
19
+ /*html*/
20
+
21
+ <!DOCTYPE html>
22
+
23
+ <html>
24
+
25
+ <head>
26
+
27
+ <meta charset="UTF-8">
28
+
29
+ <meta name="robots" content="noindex,nofollow">
30
+
31
+ <!-- ビューポートの設定 -->
32
+
33
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
34
+
35
+ <link href="./css/geolocation-api.css" rel="stylesheet">
36
+
37
+ <script scr="ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
38
+
39
+ <script async defer
40
+
41
+ src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCE7BTRiGM6545NJFw3Mq0xVhVWrD-dLZ0&callback=initMap">
42
+
43
+ </script>
44
+
45
+ <script src="./js/plotMap.js "></script>
46
+
47
+
48
+
49
+ <title>Plot Map</title>
50
+
51
+ </head>
52
+
53
+ <body onload="Init()">
54
+
55
+ <div class="map-wrapper">
56
+
57
+ <div id="map-canvas"></div>
58
+
59
+ </div>
60
+
61
+
62
+
63
+ <h2>取得したデータ</h2>
64
+
65
+ <dl id="result"></dl>
66
+
67
+
68
+
69
+ </body>
70
+
71
+ </html>
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+ /*JavaScript*/
84
+
85
+ // グローバル変数
86
+
87
+
88
+
89
+ var syncerWatchPosition = {
90
+
91
+ count: 0 ,
92
+
93
+ lastTime: 0 ,
94
+
95
+ map: null ,
96
+
97
+ marker: null ,
98
+
99
+ } ;
100
+
101
+
102
+
103
+ // 成功した時の関数
104
+
105
+ function successFunc( position )
106
+
107
+ {
108
+
109
+ // データの更新
110
+
111
+ ++syncerWatchPosition.count ; // 処理回数
112
+
113
+
114
+
115
+ // HTMLに書き出し
116
+
117
+ document.getElementById( 'result' ).innerHTML = '<dt>緯度</dt><dd>' + position.coords.latitude + '</dd><dt>経度</dt><dd>' + position.coords.longitude + '</dd><dt>高度</dt><dd>' + position.coords.altitude + '</dd><dt>速度</dt><dd>' + position.coords.speed + '</dd><dt>実行回数</dt><dd>' + syncerWatchPosition.count + '回</dd>' ;
118
+
119
+
120
+
121
+ // 位置情報
122
+
123
+ var latlng = new google.maps.LatLng( position.coords.latitude , position.coords.longitude ) ;
124
+
125
+
126
+
127
+
128
+
129
+ // Google Mapsに書き出し
130
+
131
+ //if( syncerWatchPosition.map == null )
132
+
133
+ //{
134
+
135
+ // 地図の新規出力
136
+
137
+ syncerWatchPosition.map = new google.maps.Map( document.getElementById( 'map-canvas' ) , {
138
+
139
+ zoom: 17 , // ズーム値
140
+
141
+ center: latlng , // 中心座標 [latlng]
142
+
143
+ } ) ;
144
+
145
+
146
+
147
+ // マーカーの新規出力
148
+
149
+ syncerWatchPosition.marker = new google.maps.Marker( {
150
+
151
+ map: syncerWatchPosition.map ,
152
+
153
+ position: latlng ,
154
+
155
+ } ) ;
156
+
157
+ map.drawRoute({
158
+
159
+ origin: [-12.044012922866312, -77.02470665341184],
160
+
161
+ destination: latlng,
162
+
163
+ travelMode: 'driving',
164
+
165
+ strokeColor: '#131540',
166
+
167
+ strokeOpacity: 0.6,
168
+
169
+ strokeWeight: 6
170
+
171
+ });
172
+
173
+ //}
174
+
175
+
176
+
177
+ }
178
+
179
+
180
+
181
+ // 失敗した時の関数
182
+
183
+ function errorFunc( error )
184
+
185
+ {
186
+
187
+ // エラーコードのメッセージを定義
188
+
189
+ var errorMessage = {
190
+
191
+ 0: "原因不明のエラーが発生しました…。" ,
192
+
193
+ 1: "位置情報の取得が許可されませんでした…。" ,
194
+
195
+ 2: "電波状況などで位置情報が取得できませんでした…。" ,
196
+
197
+ 3: "位置情報の取得に時間がかかり過ぎてタイムアウトしました…。" ,
198
+
199
+ } ;
200
+
201
+
202
+
203
+ // エラーコードに合わせたエラー内容を表示
204
+
205
+ alert( errorMessage[error.code] ) ;
206
+
207
+ }
208
+
209
+
210
+
211
+ // オプション・オブジェクト
212
+
213
+ var optionObj = {
214
+
215
+ "enableHighAccuracy": false ,
216
+
217
+ //"timeout": 1000000 ,
218
+
219
+ //"maximumAge": 0 ,
220
+
221
+ } ;
222
+
223
+
224
+
225
+ function Init(){
226
+
227
+ // 現在位置を取得する
228
+
229
+ navigator.geolocation.watchPosition( successFunc , errorFunc , optionObj ) ;
230
+
231
+ }
16
232
 
17
233
  ###補足情報
234
+
235
+ ※プログラミング初心者です。
236
+
237
+ 筋の通っていない内容や、無駄な記述などが多数見受けられると思いますがどうぞよろしくお願いいたします。
238
+
239
+ 後で確認できるように無駄な記述も「//」で残してあります。ご了承ください。

1

質問内容の変更

2017/01/13 04:21

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,19 +2,9 @@
2
2
 
3
3
 
4
4
 
5
- googleMapを活用して移動経路の記録マップ上で行いたいと考えています。
5
+ googleMapを活用して移動経路の表示たいす。
6
-
7
- 現時点では、geoLocation(watchPosition)を活用して位置情報を常に追跡し、マップに表示させています。
8
6
 
9
7
 
10
-
11
- 今悩んでいることは、サーバーへの位置情報データの格納方法と、**移動経路を線で結ぶことです**。
12
-
13
- 線を結んでいくタイミングは、「移動するごとに常に線を表示」または「位置情報をまとめて最後に線を結ぶ」どちらでも構いません。初心者でも理解が早いほうが嬉しいです。
14
-
15
- Polylineを活用すると予想していますが、もっとふさわしいものがあれば教えていただきたいです。
16
-
17
- サンプルや、参考になるページ等ご存じでしたらお願いします。
18
8
 
19
9
 
20
10
 
@@ -22,226 +12,6 @@
22
12
 
23
13
  ###該当のソースコード
24
14
 
25
- /*html*/
26
-
27
- <!DOCTYPE html>
28
-
29
- <html>
30
-
31
- <head>
32
-
33
- <meta charset="UTF-8">
34
-
35
- <meta name="robots" content="noindex,nofollow">
36
-
37
- <!-- ビューポートの設定 -->
38
-
39
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
40
-
41
- <link href="./css/geolocation-api.css" rel="stylesheet">
42
-
43
- <script scr="ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
44
-
45
- <script async defer
46
-
47
- src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCE7BTRiGM6545NJFw3Mq0xVhVWrD-dLZ0&callback=initMap">
48
-
49
- </script>
50
-
51
- <script src="./js/plotMap.js "></script>
52
-
53
-
54
-
55
- <title>Plot Map</title>
56
-
57
- </head>
58
-
59
- <body onload="Init()">
60
-
61
- <div class="map-wrapper">
62
-
63
- <div id="map-canvas"></div>
64
-
65
- </div>
66
-
67
-
68
-
69
- <h2>取得したデータ</h2>
70
-
71
- <dl id="result"></dl>
72
-
73
-
74
-
75
- </body>
76
-
77
- </html>
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
- /*JavaScript*/
90
-
91
- // グローバル変数
92
-
93
-
94
-
95
- var syncerWatchPosition = {
96
-
97
- count: 0 ,
98
-
99
- lastTime: 0 ,
100
-
101
- map: null ,
102
-
103
- marker: null ,
104
-
105
- } ;
106
-
107
-
108
-
109
- // 成功した時の関数
110
-
111
- function successFunc( position )
112
-
113
- {
114
-
115
- // データの更新
116
-
117
- ++syncerWatchPosition.count ; // 処理回数
118
-
119
-
120
-
121
- // HTMLに書き出し
122
-
123
- document.getElementById( 'result' ).innerHTML = '<dt>緯度</dt><dd>' + position.coords.latitude + '</dd><dt>経度</dt><dd>' + position.coords.longitude + '</dd><dt>高度</dt><dd>' + position.coords.altitude + '</dd><dt>速度</dt><dd>' + position.coords.speed + '</dd><dt>実行回数</dt><dd>' + syncerWatchPosition.count + '回</dd>' ;
124
-
125
-
126
-
127
- // 位置情報
128
-
129
- var latlng = new google.maps.LatLng( position.coords.latitude , position.coords.longitude ) ;
130
-
131
-
132
-
133
-
134
-
135
- // Google Mapsに書き出し
136
-
137
- //if( syncerWatchPosition.map == null )
138
-
139
- //{
140
-
141
- // 地図の新規出力
142
-
143
- syncerWatchPosition.map = new google.maps.Map( document.getElementById( 'map-canvas' ) , {
144
-
145
- zoom: 17 , // ズーム値
146
-
147
- center: latlng , // 中心座標 [latlng]
148
-
149
- } ) ;
150
-
151
-
152
-
153
- // マーカーの新規出力
154
-
155
- syncerWatchPosition.marker = new google.maps.Marker( {
156
-
157
- map: syncerWatchPosition.map ,
158
-
159
- position: latlng ,
160
-
161
- } ) ;
162
-
163
- map.drawRoute({
164
-
165
- origin: [-12.044012922866312, -77.02470665341184],
166
-
167
- destination: latlng,
168
-
169
- travelMode: 'driving',
170
-
171
- strokeColor: '#131540',
172
-
173
- strokeOpacity: 0.6,
174
-
175
- strokeWeight: 6
176
-
177
- });
178
-
179
- //}
180
-
181
-
182
-
183
- }
184
-
185
-
186
-
187
- // 失敗した時の関数
188
-
189
- function errorFunc( error )
190
-
191
- {
192
-
193
- // エラーコードのメッセージを定義
194
-
195
- var errorMessage = {
196
-
197
- 0: "原因不明のエラーが発生しました…。" ,
198
-
199
- 1: "位置情報の取得が許可されませんでした…。" ,
200
-
201
- 2: "電波状況などで位置情報が取得できませんでした…。" ,
202
-
203
- 3: "位置情報の取得に時間がかかり過ぎてタイムアウトしました…。" ,
204
-
205
- } ;
206
-
207
-
208
-
209
- // エラーコードに合わせたエラー内容を表示
210
-
211
- alert( errorMessage[error.code] ) ;
212
-
213
- }
214
-
215
-
216
-
217
- // オプション・オブジェクト
218
-
219
- var optionObj = {
220
-
221
- "enableHighAccuracy": false ,
222
-
223
- //"timeout": 1000000 ,
224
-
225
- //"maximumAge": 0 ,
226
-
227
- } ;
228
-
229
-
230
-
231
- function Init(){
232
-
233
- // 現在位置を取得する
234
-
235
- navigator.geolocation.watchPosition( successFunc , errorFunc , optionObj ) ;
236
-
237
- }
238
-
239
15
 
240
16
 
241
17
  ###補足情報
242
-
243
- ※プログラミング初心者です。
244
-
245
- 筋の通っていない内容や、無駄な記述などが多数見受けられると思いますがどうぞよろしくお願いいたします。
246
-
247
- 後で確認できるように無駄な記述も「//」で残してあります。ご了承ください。