Osmdroid - невозможно загрузить карту онлайн

Я использую библиотеку osmdroid для использования карт openstreetmaps в своем приложении для Android, но не могу загрузить карты в режиме онлайн, используя Wi-Fi. Если я вручную загружаю карты (файл mbtiles) и помещаю его в файл osmdroid на устройстве, он работает нормально, и они загружаются моим приложением, но если я хочу, чтобы мое приложение загружало карты из Интернета в режиме реального времени не работает и карты не грузятся.

В 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 /› ‹ использует функцию 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 до последней версии.

person MKer    schedule 26.05.2014

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

Политика использования тайлов OpenStreetMap ( http://wiki.openstreetmap.org/wiki/Tile_usage_policy ) гласит, что должно быть отправлено «Действительное приложение для идентификации User-Agent». Текущий пользовательский агент 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