固定領域に基づいてオフラインで使用するために OSM タイルをダウンロードしようとしましたが、コードはしばらくの間正常に機能しています。
ただし、最近このエラーに直面しています:
ERROR(8936): recvfrom failed: ECONNRESET (Connection reset by peer)
これは OSM のサーバーの問題によるものなのか、それともこの問題を引き起こしている非効率的なコーディング規則の一種なのか、疑問に思っています。
これらはダウンロード用の私のコードです:
for (int y = placeTopLeft.getYTile(); y <= placeBottomLeft.getYTile(); y++){
for(int x = placeTopLeft.getXTile(); x <= placeBottomRight.getXTile(); x++){
try {
String urlStr = "http://a.tile.openstreetmap.org/"+ v +"/"+x+"/"+y+".png";
URL url = new URL(urlStr);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
File newFileDir = new File(Environment.getExternalStorageDirectory().toString()
+ "/test/"+ tID+ "/"+v+"/"+x);
newFileDir.mkdirs();
File newFile = new File(newFileDir, y+".png");
OutputStream output = new FileOutputStream(newFile);
int read;
while ((read = in.read()) != -1) {
output.write(read);
output.flush();
}
urlConnection.disconnect();
} catch (Exception e) {
mNotificationHelper.cancelled();
Log.e("URL::: ERROR", e.getMessage());
e.printStackTrace();
}
loopCount++;
publishProgress( (int) ((loopCount/totalLoopCount) * 100 ) );
}
}
このエラーをより明確に示すために注文する他の詳細が不足している場合はお知らせください。ありがとうございます!