2017-02-03 1 views
1

Ich habe versucht, eine Offline-Karte mit Sqlite-Kacheln in Assets zu erstellen. Ich verschiebe die SQLite-Datei in den Osmdroid-Ordner, aber es lädt nur wenige Teile der Karte.OSMDroid Graubereich von Sqlite-Kacheln

Ich erstellte meine SQLite-Datei mit MOBAC, ich versuchte, verschiedene Zoom-Ebene mit der gleichen oder einer anderen Schicht zu wählen und erzwingen Neuzeichnen Quadrat als PNG.

Die Karte wird mit dem folgenden Code:

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); 

Aber wenn die Karte geladen wird (nehmen Sie einige Male, die ich weiß nicht, ob es normal ist). Da der Großteil der Karte grau ist, muss ich mehrmals hinein- und herauszoomen, um einige Teile zu laden.

Ich verstehe nicht, wie alle meine sichtbaren Karte geladen werden.

Antwort

1

Der "Name" der in MOBAC verwendeten Kachelquelle müsste in Ihrem Beispiel "MAPNIK" entsprechen. Sie können überprüfen, wofür es eingestellt ist, indem Sie entweder das Befehlszeilentool sqlite3 verwenden oder das Plugin sqlite manager für Firefox verwenden.

select * from tiles sollte es tun

Ihr Beispielcode auch die Zoomstufe setzt bis 15. Sind Sie sicher, dass Sie Zoomstufe 15 in Mobac ausgewählt? Es kann hilfreich sein, den Standardbereich lat/lon festzulegen, wenn die App an einem Ort beginnt, von dem Sie wissen, dass er sich in der Datenbank befindet. Es ist auch hilfreich, die Zoom-Stufen von 0 bis 9 einzuschließen, da der Inhalt für diese Zoom-Stufen nicht zu groß ist und es Ihnen hilft, herauszufinden, wo sich wo ist.

Die Verzögerung ist wahrscheinlich vom Kopieren von Assets nach/sdcard beim Start. Sie sollten auch sicher sein, dass die Datenbank existiert, wo Osmdroid sie finden kann, bevor Sie die Kartenansicht erstellen (setContentView). Wenn das keine Option ist, können Sie auch reset den Kartenkachelanbieter nach Abschluss der Kopieraktion von mapView.setTileProvider(new MapTileProviderBasic(context));

+1

Der 'mapView.setTileProvider (new MapTileProviderBasic (Kontext));' machen Sie den Job! Vielen Dank. Was genau macht der setTileProvider? Ich finde nicht viele Informationen darüber. – Wiicolas

+0

Der Kachelanbieter lädt alle Kacheln und aggregiert verschiedene Mechanismen zum Auffinden von Anzeigen für die Anzeige (online, offline, Caching usw.). Wenn es initialisiert wird, wird nach Offline-Kachelarchiven gesucht. Wenn Sie daher springen, wird der Scan ausgelöst – spy