2014-01-17 4 views
6

у меня есть развитый, развернутый и ранее успешное приложение, которое использует Osmdroid для загрузки плитки от поставщика плитки по умолчанию, который MapnikOsmdroid и Mapnik поставщик плитки больше не работает

mMapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE); 

или

mMapView.setTileSource(TileSourceFactory.MAPNIK); 

До недавнего времени (возможно, с сегодняшнего дня) плитки на реальных устройствах (телефон и планшет) больше не загружаются. Я использую osmdroid версии 3.0.5. Если я попробую последнюю версию 4.0 в небольшом проекте-образце на эмуляторе, я вижу «403 запрещенные ответы» в logcat при попытке загрузить maptiles. Если я переключу источник плитки на

mMapView.setTileSource(TileSourceFactory.MAPQUESTOSM); 

тогда карта видна без проблем. Я не вижу никаких сообщений о проблемах на Osmdroid web site issues list, а также в поиске Google не обнаружены какие-либо новые проблемы, поэтому я спрашиваю, видит ли кто-либо другое это новое поведение от Mapnik и может знать об исправлении?

+0

TileSourceFactory.MAPQUESTOSM не поддерживается больше –

ответ

4

Пожалуйста, следуйте Issue 515 отслеживать этот вопрос. Мы внедрили исправление, и вскоре мы выпустим соответствующее обновление.

+0

Большое спасибо. Я отслеживал 515 и временно сделал исправленную банку. Я с нетерпением жду нового релиза, хотя я предпочитаю использовать официальный бинарный файл. – NickT

+1

Версия 4.1 jar исправляет проблему сейчас. Огромное спасибо – NickT

1

От OpenPisteMap:

Если вы начнете получать "403 Forbidden" ответов, остановки. Не просто держитесь подальше от сервера - это, вероятно, означает, что вы были , запрещенные для оскорбительного поведения и продолжающие удаляться на сервере , просто расширят ваш запрет.

http://wiki.osm.org/wiki/Blocked

4

Имея такую ​​же проблему.

К сожалению, похоже, что osmdroid был запрещен к доступу http://tile.openstreetmap.org. Читая tile usage policy, я нашел эти две вещи, которые могли бы объяснить, почему osmdroid был запрещен:

Интенсивное использование (например, распределяя приложение, которое использует плитки из openstreetmap.org) запрещено без предварительного разрешения со стороны системных администраторов.

и

Valid User-Agent идентификации приложения. Подделка пользовательского агента другого приложения блокирует вас.

(UserAgent osmdroid является "Apache-HttpClient/UNAVAILABLE (Java 1.4)", который является довольно общим)

+0

Было бы хорошо, если osmdroid позволит установить агент пользователя (делает это уже?), Как я подумайте, что это решит проблему. Он уже ограничивает потоки доступа до 2 явно, чтобы соответствовать политике использования OSM. –

+2

Я посмотрел исходный код osmdroid, и я не смог найти способ вручную изменить пользовательский агент. Итак, я создал патч, который изменит пользовательский агент на то, что более соответствует политике использования плитки OSM. Вы можете найти более подробную информацию здесь: http://code.google.com/p/osmdroid/issues/detail?id=515 – user3210008

+0

с тех пор, как 5.1 его можно изменить – spy

0

Вы можете использовать этот код для установки агента пользователя

 HttpClientFactory.setFactoryInstance(new IHttpClientFactory() { 
     public HttpClient createHttpClient() { 
      final DefaultHttpClient client = new DefaultHttpClient(); 
      client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "useragent"); 
      return client; 
     } 
    }); 
Смежные вопросы