Ich habe ein Projekt, das auch im Offline-Modus Kartendaten anzeigen muss. Ich habe OpenStreet-Karten für dasselbe verwendet. Ich habe Kartenbilder (Kacheln) gespeichert und jede Kachel wird von einem Kachelschlüssel in der Datenbank referenziert. Ich möchte auf diese Kartenkacheln aus der Datenbank zugreifen und sie entsprechend verwenden.
Bitte schlagen Sie mir vor.
Vielen Dank im Voraus.
Kartenkacheln in Osmdroid werden von Kartenkachelanbietern bereitgestellt. Der von Osmdroid standardmäßig verwendete Kachelanbieter ist MapTileProviderBasic . Dieser Anbieter erweitert MapTileProviderArray , was bedeutet, dass es sich um ein Array von einigen anderen Kachelanbietern handelt - wenn eine Kachel angefordert wird, werden diese Kachelanbieter nacheinander nach einem Kachelbild gefragt, bis eines von ihnen es bereitstellt. Sehen Sie sich den Konstruktor von MapTileProviderBasic
an:
Dem Array von Providern sind drei Kartenkachelanbieter in dieser Reihenfolge hinzugefügt:
MapTileFilesystemProvider
- stellt Kacheln aus dem Dateisystem (SD-Kartenverzeichnis) MapTileFileArchiveProvider
- stellt Kacheln aus Archiv im Dateisystem MapTileDownloader
- stellt Kacheln bereit, indem sie aus dem Internet heruntergeladen werden (z. B. von OSM-Servern) Das MapTileProviderBasic
sucht zuerst nach einer bestimmten Kachel im Dateisystem, wenn die Kachel nicht verfügbar ist, sucht sie in Archivdateien und, wenn sie dort nicht verfügbar ist, lädt sie die Kachel aus dem Internet herunter.
Ok, das ist der Standardmechanismus. Wenn Sie diesen Mechanismus ändern möchten, um nach Kacheln zu suchen, die in einer Datenbank gespeichert sind, können Sie eine eigene Klasse ähnlich wie MapTileProviderBasic
erstellen. Also könnte Ihre Klasse auch MapTileProviderArray
erweitern und einfach andere Anbieter im Konstruktor verwenden. In Osmdroid gibt es eine Klasse DatabaseFileArchive , das Ihnen beim Lesen von Kacheln aus der DB helfen könnte.
Nachdem Sie Ihren eigenen Kachelanbieter erstellt haben, sollten Sie ihn anstelle des Standardkachels verwenden. Kartenkachelanbieter sind mit MapView
verknüpft. Einige Konstruktoren von MapView
verwenden MapTileProviderBase
als Argument - Sie können einen von ihnen verwenden, um Ihren eigenen Provider anzuhängen.
Die einfachste Möglichkeit, Offline-Karten mit dem Standardanbieter zu verwenden %Co%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> src / main / java / org / Osmdroid / Kachelprovider / Konstanten / OpenStreetMapTileProviderConstants.java "> MapTileProviderBasic
.
Laden Sie die Datei OSMDROID_PATH
oder .zip, .sqlite, .mbtiles
in das Verzeichnis .gemf
herunter.
Wenn Sie sich osmdroid/
Sie sehen es als MapTileFileArchiveProvider
in %Co_de% , das den richtigen Archivanbieter basierend auf den Dateierweiterungen auswählt.