2017-02-03 8 views
1

Я попытался сделать автономную карту, используя sqlite плитки в активах. Перемещаю файл sqlite в папку osmdroid, но он загружает только несколько частей карты.OSMDroid серая область от sqlite плитки

Я создал свой файл sqlite с помощью MOBAC, я попытался выбрать другой уровень масштабирования, используя тот же самый или другой слой, и перестроить квадрат в PNG.

Карта создается с помощью следующего кода:

map = (MapView) findViewById(R.id.mapview); 
    map.setTileSource(TileSourceFactory.MAPNIK); 
    MyLocationNewOverlay mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(StepActivity.this), map); 
    mLocationOverlay.enableMyLocation(); 
    map.getOverlays().add(mLocationOverlay); 
    map.setBuiltInZoomControls(true); 
    map.getController().setZoom(15); 
    map.setClickable(false); 
    map.setUseDataConnection(false); 
    map.setMinZoomLevel(15); 
    map.setMaxZoomLevel(18); 

Но когда карта загружается (потребуется некоторое время, я не знаю, если это нормально). Существует большая часть карты greyed, мне нужно увеличить/уменьшить масштаб несколько раз, чтобы загрузить некоторые части.

Я не понимаю, как загрузить всю мою видимую карту.

ответ

1

«Имя» источника плитки, используемого в MOBAC, в вашем примере должно соответствовать «MAPNIK». Вы можете проверить, на что он установлен, либо с помощью инструмента командной строки sqlite3, либо с помощью плагина sqlite manager для firefox.

select * from tiles должен сделать это

Ваш пример кода также устанавливает уровень масштабирования 15. Вы уверены, что выбран уровень масштабирования 15 в MOBAC? Возможно, это поможет установить значение по умолчанию lat/lon, когда приложение начинает свое местоположение в базе данных. Также полезно включать уровни масштабирования 0-9 или около того, поскольку контент для этих уровней масштабирования не слишком велик, и это поможет вам узнать, где находится.

Задержка, вероятно, связана с копированием из активов в/sdcard при запуске. Вы также захотите убедиться, что база данных существует там, где osmdroid может найти ее перед созданием вида карты (setContentView). Если это не вариант, вы также можете указать reset провайдер картографической плитки после завершения действия копирования mapView.setTileProvider(new MapTileProviderBasic(context));

+1

«mapView.setTileProvider (новый MapTileProviderBasic (контекст));« выполняйте работу! Большое спасибо. Что конкретно делает setTileProvider? Я не нахожу много информации об этом. – Wiicolas

+0

поставщик плитки выполняет всю загрузку плитки и объединяет различные механизмы поиска дисплеев для отображения (онлайн, офлайн, кеширование и т. Д.). когда он инициализируется, он сканирует архивы в автономном режиме. Поэтому отскакивание приводит к тому, что сканирование отключается – spy