質問編集履歴

3

情報が足りなかった

2021/05/27 13:15

投稿

grape_ll
grape_ll

スコア83

test CHANGED
File without changes
test CHANGED
@@ -328,7 +328,7 @@
328
328
 
329
329
  ###エラーなど
330
330
 
331
- 上二つの白枠エクスクラメーションマークのエラーはよくわかっていません.
331
+ 上二つの白枠エクスクラメーションマークのメッセはよくわかっていません.
332
332
 
333
333
  二つ目はforbiddenとなっているので,指定しているHTTPが使えなくなっているのでしょうか.
334
334
 
@@ -342,6 +342,8 @@
342
342
 
343
343
  ```ここに言語を入力
344
344
 
345
+ //message
346
+
345
347
  Tile 0x0 requested with center=37.62815,-122.4265&zoom=15&size=640x640&scale=2&maptype=roadmap&format=png&style=element:geometry|invert_lightness:true|weight:3.1|hue:0x00ffd5&style=element:labels|visibility:off&sensor=false
346
348
 
347
349
  UnityEngine.MonoBehaviour:print(Object)
@@ -366,10 +368,14 @@
366
368
 
367
369
 
368
370
 
371
+ //error
372
+
369
373
  Assets\FoodyGo\Scripts\Mapping\GoogleMapTile.cs(118,26): error CS0103: The name 'SendWebRequest' does not exist in the current context
370
374
 
371
375
 
372
376
 
377
+ //warning
378
+
373
379
  Assets\FoodyGo\Scripts\Mapping\GoogleMapTile.cs(84,17): warning CS0219: The variable 'url' is assigned but its value is never used
374
380
 
375
381
  ```

2

内容の充実化

2021/05/27 13:15

投稿

grape_ll
grape_ll

スコア83

test CHANGED
@@ -1 +1 @@
1
- 参考書与えられたコードが古くて使えない
1
+ タイル状に地図が表示ない
test CHANGED
@@ -47,3 +47,329 @@
47
47
 
48
48
 
49
49
  ```
50
+
51
+ ###追記
52
+
53
+ 上記のエラーコードをひとまず自分でできるところは対処してみました.
54
+
55
+ errorで推奨されていた方に書き換えただけですが.
56
+
57
+ ```C#
58
+
59
+ using UnityEngine;
60
+
61
+ using UnityEngine.Networking;
62
+
63
+ using System.Collections;
64
+
65
+ using packt.FoodyGo.Mapping;
66
+
67
+ using packt.FoodyGo.Services;
68
+
69
+
70
+
71
+ namespace packt.FoodyGO.Mapping
72
+
73
+ {
74
+
75
+ [AddComponentMenu("Mapping/GoogleMapTile")]
76
+
77
+ public class GoogleMapTile : MonoBehaviour
78
+
79
+ {
80
+
81
+ public enum MapType
82
+
83
+ {
84
+
85
+ RoadMap,
86
+
87
+ Satellite,
88
+
89
+ Terrain,
90
+
91
+ Hybrid
92
+
93
+ }
94
+
95
+
96
+
97
+ //Google Maps API Staticmap URL
98
+
99
+ private const string GOOGLE_MAPS_URL = "https://maps.googleapis.com/maps/api/staticmap";
100
+
101
+
102
+
103
+ [Header("Map Settings")]
104
+
105
+ [Range(1,20)]
106
+
107
+ [Tooltip("Zoom Level, 1=global - 20=house")]
108
+
109
+ public int zoomLevel = 1;
110
+
111
+ [Tooltip("Type of map, Road, Satellite, Terrain or Hybrid")]
112
+
113
+ public MapType mapType = MapType.RoadMap;
114
+
115
+ [Range(64,1024)]
116
+
117
+ [Tooltip("Size in pixels of the map image")]
118
+
119
+ public int size = 640;
120
+
121
+ [Tooltip("Double the pixel resolution of the image returned")]
122
+
123
+ public bool doubleResolution = true;
124
+
125
+
126
+
127
+ public MapLocation worldCenterLocation;
128
+
129
+
130
+
131
+ [Header("Tile Settings")]
132
+
133
+ [Tooltip("Sets the tiles position in tile units")]
134
+
135
+ public Vector2 TileOffset;
136
+
137
+ [Tooltip("Calculated tile center")]
138
+
139
+ public MapLocation tileCenterLocation;
140
+
141
+ [Tooltip("Calculated tile corners")]
142
+
143
+ public Vector2 TopLeftCorner;
144
+
145
+ public Vector2 BottomRightCorner;
146
+
147
+
148
+
149
+ [Header("GPS Settings")]
150
+
151
+ [Tooltip("GPS service used to locate world center")]
152
+
153
+ public GPSLocationService gpsLocationService;
154
+
155
+ private double lastGPSUpdate;
156
+
157
+
158
+
159
+ // Use this for initialization
160
+
161
+ void Start ()
162
+
163
+ {
164
+
165
+ RefreshMapTile ();
166
+
167
+ }
168
+
169
+
170
+
171
+ // Update is called once per frame
172
+
173
+ void Update ()
174
+
175
+ {
176
+
177
+ // 新しい位置が取得されたかどうかを確認する
178
+
179
+ if (gpsLocationService != null &&
180
+
181
+ gpsLocationService.IsServiceStarted &&
182
+
183
+ lastGPSUpdate < gpsLocationService.Timestamp)
184
+
185
+ {
186
+
187
+ lastGPSUpdate = gpsLocationService.Timestamp;
188
+
189
+ worldCenterLocation.Latitude = gpsLocationService.Latitude;
190
+
191
+ worldCenterLocation.Longitude = gpsLocationService.Longitude;
192
+
193
+ print("GoogleMapTile refreshing map texture");
194
+
195
+ RefreshMapTile();
196
+
197
+ }
198
+
199
+ }
200
+
201
+
202
+
203
+ public void RefreshMapTile() {
204
+
205
+
206
+
207
+ StartCoroutine(_RefreshMapTile());
208
+
209
+ }
210
+
211
+
212
+
213
+ IEnumerator _RefreshMapTile ()
214
+
215
+ {
216
+
217
+ // タイル中心の緯度/経度を取得
218
+
219
+ tileCenterLocation.Latitude = GoogleMapUtils.adjustLatByPixels(worldCenterLocation.Latitude, (int)(size * 1 * TileOffset.y), zoomLevel);
220
+
221
+ tileCenterLocation.Longitude = GoogleMapUtils.adjustLonByPixels(worldCenterLocation.Longitude, (int)(size * 1 * TileOffset.x), zoomLevel);
222
+
223
+
224
+
225
+ var url = GOOGLE_MAPS_URL;
226
+
227
+ var queryString = "";
228
+
229
+
230
+
231
+ // 地図タイルをリクエストするクエリ文字列パラメーターを作成する
232
+
233
+ queryString += "center=" + UnityWebRequest.UnEscapeURL (string.Format ("{0},{1}", tileCenterLocation.Latitude, tileCenterLocation.Longitude));
234
+
235
+ queryString += "&zoom=" + zoomLevel.ToString ();
236
+
237
+ queryString += "&size=" + UnityWebRequest.UnEscapeURL (string.Format ("{0}x{0}", size));
238
+
239
+ queryString += "&scale=" + (doubleResolution ? "2" : "1");
240
+
241
+ queryString += "&maptype=" + mapType.ToString ().ToLower ();
242
+
243
+ queryString += "&format=" + "png";
244
+
245
+
246
+
247
+ // 地図のスタイルを追加する
248
+
249
+ queryString += "&style=element:geometry|invert_lightness:true|weight:3.1|hue:0x00ffd5";
250
+
251
+ queryString += "&style=element:labels|visibility:off";
252
+
253
+
254
+
255
+ var usingSensor = false;
256
+
257
+ #if MOBILE_INPUT
258
+
259
+ usingSensor = Input.location.isEnabledByUser && Input.location.status == LocationServiceStatus.Running;
260
+
261
+ #endif
262
+
263
+
264
+
265
+ queryString += "&sensor=" + (usingSensor ? "true" : "false");
266
+
267
+
268
+
269
+ //set map bounds rect
270
+
271
+ TopLeftCorner.x = GoogleMapUtils.adjustLonByPixels(tileCenterLocation.Longitude, -size, zoomLevel);
272
+
273
+ TopLeftCorner.y = GoogleMapUtils.adjustLatByPixels(tileCenterLocation.Latitude, size, zoomLevel);
274
+
275
+
276
+
277
+ BottomRightCorner.x = GoogleMapUtils.adjustLonByPixels(tileCenterLocation.Longitude, size, zoomLevel);
278
+
279
+ BottomRightCorner.y = GoogleMapUtils.adjustLatByPixels(tileCenterLocation.Latitude, -size, zoomLevel);
280
+
281
+
282
+
283
+ print(string.Format("Tile {0}x{1} requested with {2}", TileOffset.x, TileOffset.y, queryString));
284
+
285
+
286
+
287
+ // 最後に、画像をリクエストする
288
+
289
+ var req = UnityWebRequestTexture.GetTexture(GOOGLE_MAPS_URL + "?" + queryString);
290
+
291
+ // サービスが応答するまで待つ
292
+
293
+ yield return SendWebRequest;
294
+
295
+ // 最初に古いテクスチャーを破棄する
296
+
297
+ Destroy(GetComponent<Renderer>().material.mainTexture);
298
+
299
+ // エラーをチェックする
300
+
301
+ if (req.error != null) {
302
+
303
+ print (string.Format ("Error loading tile {0}x{1}: exception={2}",
304
+
305
+ TileOffset.x, TileOffset.y, req.error));
306
+
307
+ } else {
308
+
309
+ // レンダリング画像がエラーがなければ戻ってきた画像をタイルテクスチャーとして設定する
310
+
311
+ GetComponent<Renderer> ().material.mainTexture = ((DownloadHandlerTexture)req.downloadHandler).texture;
312
+
313
+ print (string.Format ("Tile {0}x{1} textured", TileOffset.x, TileOffset.y));
314
+
315
+ }
316
+
317
+ }
318
+
319
+ }
320
+
321
+ }
322
+
323
+
324
+
325
+ ```
326
+
327
+ ![イメージ説明](1088216eff3428b3c7fc9903408cd55c.png)
328
+
329
+ ###エラーなど
330
+
331
+ 上二つの白枠エクスクラメーションマークのエラーはよくわかっていません.
332
+
333
+ 二つ目はforbiddenとなっているので,指定しているHTTPが使えなくなっているのでしょうか.
334
+
335
+ SendWebRequestは使い方が違いているようなのですが,errorで言われていたように置き換えをしただけなのですが,どうして正常に動作しないのでしょうか.
336
+
337
+ urlの部分は変わらず,どこに使用するのか分からないです.
338
+
339
+
340
+
341
+ GoogleMapTile.cs
342
+
343
+ ```ここに言語を入力
344
+
345
+ Tile 0x0 requested with center=37.62815,-122.4265&zoom=15&size=640x640&scale=2&maptype=roadmap&format=png&style=element:geometry|invert_lightness:true|weight:3.1|hue:0x00ffd5&style=element:labels|visibility:off&sensor=false
346
+
347
+ UnityEngine.MonoBehaviour:print(Object)
348
+
349
+ packt.FoodyGO.Mapping.<_RefreshMapTile>d__16:MoveNext() (at Assets/FoodyGo/Scripts/Mapping/GoogleMapTile.cs:113)
350
+
351
+ UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
352
+
353
+ packt.FoodyGO.Mapping.GoogleMapTile:RefreshMapTile() (at Assets/FoodyGo/Scripts/Mapping/GoogleMapTile.cs:75)
354
+
355
+ packt.FoodyGO.Mapping.GoogleMapTile:Start() (at Assets/FoodyGo/Scripts/Mapping/GoogleMapTile.cs:54)
356
+
357
+
358
+
359
+ Error loading tile 0x0: exception=HTTP/1.1 403 Forbidden
360
+
361
+ UnityEngine.MonoBehaviour:print(Object)
362
+
363
+ packt.FoodyGO.Mapping.<_RefreshMapTile>d__16:MoveNext() (at Assets/FoodyGo/Scripts/Mapping/GoogleMapTile.cs:123)
364
+
365
+ UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
366
+
367
+
368
+
369
+ Assets\FoodyGo\Scripts\Mapping\GoogleMapTile.cs(118,26): error CS0103: The name 'SendWebRequest' does not exist in the current context
370
+
371
+
372
+
373
+ Assets\FoodyGo\Scripts\Mapping\GoogleMapTile.cs(84,17): warning CS0219: The variable 'url' is assigned but its value is never used
374
+
375
+ ```

1

情報が足りなかった

2021/05/26 13:25

投稿

grape_ll
grape_ll

スコア83

test CHANGED
@@ -1 +1 @@
1
- urlが古くて使えない
1
+ 参考書で与えられたコードが古くて使えない
test CHANGED
@@ -1,4 +1,4 @@
1
- 「UnityによるARゲーム開発」という参考書を見ながら進めているのですが,importさせられて使うスクリプトはurlが古いもののようで使われていないようなのですがどのように変更すればよいでしょうか
1
+ 「UnityによるARゲーム開発」という参考書を見ながら進めているのですが,importさせられて使うスクリプトは数年前のもので,まだスクリプト組み方は書かれていないので自分で修正ること出来ません.どのように変更すればよいでしょうか
2
2
 
3
3
 
4
4