爲了學習,我們必須開發一個基於位置的Android遊戲。目前我們使用OSMDroid來顯示地圖。有玩家必須收集的資源(如木頭,石頭......)。這些資源當前存儲在我們的後端,具有硬編碼的長/經度,並將與setMarker一起添加到當前地圖上。 爲了在全球範圍內提供這款遊戲,我們希望根據「真實」世界動態設置資源。所以我們需要來自OSM的不同層(如森林,海洋等)來自動設置我們的資源,而不需要詢問我們的後端。 經過幾個小時與谷歌搜索後,我發現,立交API似乎可以幫助我實現這一功能。但是我找不到在Android中使用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):at de.htw.berlin.games.based.location.gui.MapActivity $ test.doInBackground(MapActivity.java:536) W/System.err(3958):at de。 htw.berlin.games.based.location.gui.MapActivity $ test.doInBackground(MapActivity.java:1) W/System.err(3958):at android.os.AsyncTask $ 2.call(AsyncTask.java:287) (3958):在java.util.concurrent.FutureTask.run(java.lang.Confurrent.FutureTask.Run())中的System.err(3958):System.err(3958):java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:305) (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:5 69) W/System.err的(3958):在java.lang.Thread.run(Thread.java:856)
感謝所有幫助的答覆:)
你好,並感謝您的答案。請你能給我一個Android的例子如何使用Overpass API嗎?提前致謝。 – dsTny
我編輯了我的回覆。 –
非常感謝! – dsTny