для учебы мы должны разработать игру для Android, основанную на местоположении. В настоящее время мы используем OSMDroid для отображения карты. Есть ресурсы (например, дерево, камень и т. д.), которые игрок должен собирать. Эти ресурсы в настоящее время хранятся в нашем бэкэнде с жестко заданными параметрами long/lat и будут добавлены с помощью setMarker на текущую карту. Чтобы предоставить эту игру глобально, мы хотим динамически устанавливать ресурсы на основе «реального» мира. Поэтому нам нужны разные слои из OSM (например, лес, море и т. д.), чтобы автоматически устанавливать наши ресурсы, не запрашивая у нашего бэкэнда. После нескольких часов поиска в Google я обнаружил, что Overpass API, похоже, помогает мне реализовать эту функциональность. Но я не могу найти учебник по использованию Overpass API в Android. Я пробовал некоторые вещи, но я не понимаю... Поэтому мне нужна ваша помощь, пожалуйста, дайте мне пример или объяснение, как это реализовать:/
Это мой текущий код, но я не думаю, что это правильно.
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 .concu rrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) W/System.err(3958): в java.lang.Thread.run(Thread.java:856)
Спасибо за все полезные ответы :)