为了学习,我们必须开发一个基于位置的安卓游戏。目前我们使用 OSMDroid 来显示地图。玩家必须收集一些资源(如木头、石头……)。这些资源当前以硬编码的 long/lat 存储在我们的后端,并将通过 setMarker 添加到当前地图上。为了在全球范围内提供这款游戏,我们希望根据“真实”世界动态设置资源。所以我们需要来自 OSM 的不同层(如森林、海洋等)来自动设置我们的资源,而无需询问我们的后端。在用谷歌搜索几个小时后,我发现 Overpass API 似乎可以帮助我实现这个功能。但我找不到在 Android 中使用 Overpass API 的任何教程。我尝试了一些东西,但我不明白...所以我需要你的帮助,
这是我当前的代码,但我认为这不正确..
URL url = new URL("http://overpass-api.de/api/interpreter");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();
InputStream inputStream = urlConnection.getInputStream();
inputStream.close();
以下异常将被抛出InputStream inputStream = urlConnection.getInputStream();
:
W/System.err(3958): java.io.FileNotFoundException: http://overpass-api.de/api/interpreter W/System.err(3958):在 libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177) W/System.err(3958):在 de.htw.berlin.games.based.location.gui。 MapActivity$test.doInBackground(MapActivity.java:536) W/System.err(3958): 在 de.htw.berlin.games.based.location.gui.MapActivity$test.doInBackground(MapActivity.java:1) W/ System.err(3958):在 android.os.AsyncTask$2.call(AsyncTask.java:287) W/System.err(3958):在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305 ) W/System.err(3958): 在 java.util.concurrent.FutureTask.run(FutureTask.java:137) W/System.err(3958): 在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask. java:230) W/System.err(3958): 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) W/System.err(3958): 在 java.util.concurrent。ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) W/System.err(3958):在 java.lang.Thread.run(Thread.java:856)
感谢所有有用的回复:)