2015-10-19 3 views
0

Я импортировал OSMDroid в свой проект, и его работа вполне нормальная с OpenStreetMap по умолчанию. Я хочу использовать карту формата MBTiles вместо OSM. Существует много учебников по использованию MBTiles в качестве автономной карты, но мой файл MBTiles хранится в онлайн-хранилище, таком какИспользование MBTiles из онлайн-хранилища с OSMDroid

http://www.example.com/mymbtiles.mbtiles.

Я использую следующий код в моем MainActivity.java, который ксерокс по умолчанию учебника OSMDroid

package com.example.user.osmdroid; 

import android.app.Activity; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 

import org.osmdroid.api.IMapController; 
import org.osmdroid.tileprovider.tilesource.TileSourceFactory; 
import org.osmdroid.tileprovider.tilesource.XYTileSource; 
import org.osmdroid.util.GeoPoint; 
import org.osmdroid.views.MapView; 

public class MainActivity extends Activity { 
    @Override public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     MapView map = (MapView) findViewById(R.id.map); 
     map.setTileSource(TileSourceFactory.MAPNIK); 
     map.setBuiltInZoomControls(true); 
     map.setMultiTouchControls(true); 
     IMapController mapController = map.getController(); 
     mapController.setZoom(9); 
     GeoPoint startPoint = new GeoPoint(23.7588, 90.38967); 
     mapController.setCenter(startPoint); 
    } 
} 

Как использовать этот онлайн сохраненного MBTiles файл с моим OSMDroid проектом?

ответ

1

Вы не можете использовать его напрямую. MBTiles - это в основном база данных sqlite. OSMDroid может читать и использовать его из памяти устройства, но не по сети. Чтобы решить эту проблему, вам нужно будет перенести базу данных на устройство, а затем сообщить OSMDroid, чтобы он использовал файл mbtiles через поставщиков источников плитки и плит.

Редактировать: учитывая размер базы данных, простейшая вещь для вас - разместить простой веб-сервис, который извлекает фрагменты из базы данных (на стороне сервера), а затем предоставляет их своим пользователям через пользовательский ITileSource. На самом деле у меня есть код для службы, но он не может быть выпущен (пока). «Стандартный» способ osm - http://server/port:path/Z/X/Y.png, но вы можете сделать его в любом формате, если хотите установить ITileSource на устройстве Android. Кроме того, вы, вероятно, захотите посмотреть на этот пример https://github.com/osmdroid/osmdroid/blob/master/OpenStreetMapViewer/src/main/java/org/osmdroid/samplefragments/SampleCustomTileSource.java Примечание: мы расширяем OnlineTileSourceBase

+0

У меня есть файл MBTiles размером 38 ГБ. Я собираюсь разработать онлайн-картографическую службу. Я почти выполнил часть веб-разработки с этим файлом MBTiles. Таким образом, в приложениях для Android карта должна быть такой же, как веб-интерфейс. Вероятно, мой подход к чистке OSMDroid был неправильным для этой цели. Любое предложение??? Во всяком случае Большое спасибо. –

+0

ответ обновлен. что должно вас поймать – spy

+0

Я много пробовал с приведенным вами примером, но не смог этого сделать. Мне нужно копать больше. В веб-службе я использую php-tile-сервер для рендеринга MBTiles с API-интерфейсом. Нет такого API для разработки Android. –

Смежные вопросы