Ich arbeite gerade an einem Schulprojekt und versuche, die Techniken beim Herunterladen von OSM-Kartenkacheln in den lokalen Speicher / Cache des Telefons zu erlernen, damit Benutzer die Karten offline betrachten können.
Dies geschieht durch Angabe eines bestimmten Ortes, und die Kartenkacheln, die sich innerhalb eines bestimmten Radius / Entfernung zum Ort befinden, werden in den Telefonspeicher für die Offline-Anzeige heruntergeladen (wenn eine Online-Verbindung besteht).
Allerdings habe ich einige kleine Probleme, die OSMDroid-APIs zu verstehen. Aus meiner Sicht scheint es, dass die beteiligten Klassen sind:
Bitte korrigieren Sie mich, wenn ich mich irre.
Auch in MapTileBase (von dem ich glaube, dass es der Provider ist) gibt die getMapTile android.graphics.drawable.Drawable .
Ist diese Zeichenklasse sogar mit dem Konzept der Offline-Kartenanzeige verbunden?
Hoffentlich kann mir jemand erklären, wo genau Karten aufgerufen werden, um sie in den Speicher des Telefons zu laden, und wie wir die Karten bearbeiten können, um Schnittstellenelemente wie Routen, Pins usw. anzuzeigen.
Ich habe keine genaue Antwort, da Sie nach einer Methode suchen, um offline außerhalb eines Bereichs zu cachespeichern, zu dem MapView noch nicht navigiert ist. Die eingebaute Caching-Unterstützung ist da, aber nicht genau, wie Sie es tun wollen.
Sie werden Online-Download-Funktionen benötigen, wenn Sie vorhaben, Ihre eigenen Offline-Kartenkacheln zu cachen und nicht nur zu liefern. Ich würde mir den MapTileDownloader ansehen und vielleicht versuchen, eine eigene Version davon zu implementieren. Die MapTileDownloader.TileLoader.loadTile () -Methode verwendet einen MapTileRequestState, den MapTileProviderArray, wenn er benötigt wird, wenn eine Kartenkachel benötigt wird, annimmt.
Wenn Sie die vorhandene TileLoader-Funktionalität des MapTileDownloaders replizieren können, können Sie wahrscheinlich Ihre eigenen relativen MapTileRequestState- oder Straight-Up-MapTile-Dateien in das angeforderte einfügen. z.B. Nimm den TileLoader namens MapTileRequestState, inspiziere ihn, finde heraus, wie man einen neuen MapTileRequestState / MapTile erstellt, der Kacheln außerhalb der aktuellen Ansicht darstellt. Es wird jedoch nicht einfach sein, da Sie sich mit den verschiedenen Zoomstufen befassen müssen, und abhängig von der Zoomstufe sollte der Radius kleiner sein, usw. Eine niedrigere Zoomstufe von 18 hätte einen größeren Fliesenradius als eine höhere 10.
Ich persönlich habe kürzlich versucht, 100% offline zu arbeiten, also habe ich keinen Beispielcode, der helfen könnte. Viel Glück, obwohl es ein paar Monate war.
Gehen Sie zuerst die Quelle nach rechts Ссылка
Es gibt ein paar Wiki-Artikel, die helfen werden, vor allem den Offline-Kartenkacheln-Artikel. Kurz gesagt, verwenden Sie MOBAC oder das von Osmdroid bereitgestellte Tool. OSMBonuspack hat auch ein Werkzeug, um die gleiche Aufgabe auf dem Gerät auszuführen.
Kartenkacheln werden tatsächlich mit dieser Klasse heruntergeladen Ссылка
Tags und Links android maps osmdroid offline-caching