Osmdroid - Не може да се зареди карта онлайн

Използвам библиотеката osmdroid, за да използвам openstreetmaps в моето приложение за Android, но не мога да заредя картите онлайн, използвайки wifi. Ако направя ръчно изтегляне на картите (mbtiles файл) и го поставя в osmdroid filder в устройството, работи добре и те се зареждат от приложението ми, но ако искам приложението ми да зарежда картите от мрежата в реално време не работи и картите не се зареждат.

В Logcat получавам следното предупреждение:

"Problem downloading Maptile: /4/8/8 HTTP/1.1 403 Forbiden"

Имам следните разрешения в манифеста:

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

Това е кодът, който използвам за зареждане на картите с osmdoid:

myOpenMapView = (MapView)findViewById(R.id.openmapview);
myOpenMapView.setBuiltInZoomControls(true);
myMapController = myOpenMapView.getController();
myMapController.setZoom(4);

може ли някой да ми помогне Благодаря


person user3589381    schedule 26.05.2014    source източник
comment
добавете това ‹uses-permission android:name=android.permission.ACCESS_COARSE_LOCATION/› ‹uses-permission android:name=android.permission.ACCESS_FINE_LOCATION/› ‹uses-feature android:name=android.hardware.location.network /› ‹ uses-feature android:name=android.hardware.location.gps /› ‹uses-feature android:name=android.hardware.wifi /›   -  person Rohit Goswami    schedule 26.05.2014


Отговори (2)


Проблемът, споменат от LordRaydenMK, е коригиран в osmdroid 4.1.

Така че, ако това е проблемът, който имате, просто трябва да актуализирате вашата osmdroid lib до най-новата версия.

person MKer    schedule 26.05.2014

Потребителският агент по подразбиране Apache HttpClient наскоро получи забрана за достъп до tile.openstreetmap.org (сървърът връща 403). В резултат на това доставчикът Mapnik вече не обслужва никакви плочки за osmdroid.

Правилата за използване на плочки на OpenStreetMap ( http://wiki.openstreetmap.org/wiki/Tile_usage_policy) гласят, че трябва да бъде изпратено „Валидно приложение за идентифициране на потребителски агент“. Текущият потребителски агент, който osmdroid изпраща, когато изтегли плочка, е „Apache-HttpClient/UNAVAILABLE (java 1.4)“, което е доста общо.

Създадох корекция, която ще изпрати потребителски агент, който е по-съвместим с правилата за използване на плочки на OSM. Новият потребителски агент е „osmdroid ([име на пакет])“, където [име на пакет] е името на пакета на приложението, използващо osmdroid.

Корекцията може да бъде намерена тук: http://pastebin.com/kxBh1gQ5

Пачът не е много красив, но си върши работата.

Източник: https://code.google.com/p/osmdroid/issues/detail?id=515

person LordRaydenMK    schedule 26.05.2014