Offline gekachelte Karte Web App


23

Ich bin mir nicht sicher, ob ich das hier oder auf Stackoverflow posten soll, da es eine Art Crossover ist. Lass es mich versuchen.

Im vorgeschlagenen HTML5-Standard besteht die Möglichkeit, Webanwendungsdaten in einem lokalen Cache mithilfe eines Cache-Manifests zu speichern . Ich versuche, diese Technik für eine offline gekachelte Webkartenanwendung zu verwenden, und habe hier einen kurzen Prototypen erstellt , der auf einer Standardinstallation von Geoserver basiert.

Ich habe gerade die OpenLayers-Clientseite kopiert, die aus einer der Standardebenen generiert wurde, und das <html>Tag in geändert

<html xmlns="http://www.w3.org/1999/xhtml" manifest="cache.manifest">

Und erstellte die Datei, cache.manifestdie einfach liest

CACHE MANIFEST
http://lima.schaaltreinen.nl:8080/

Was meines Wissens nach alles lokal zwischenspeichern sollte, was von dieser URL geladen wird: alle Kacheln und das OpenLayers JS. Beim ersten Aufruf von Firefox werde ich zwar aufgefordert, den lokalen Speicher zuzulassen. Wenn ich jedoch auf "Aktualisieren" drücke (online oder offline), wird die Meldung angezeigt, dass das OpenLayers-Objekt nicht definiert ist. Offenbar hat OpenLayers JS nicht geladen.

Hat jemand eine funktionierende OpenLayers-basierte gekachelte Offline-Webkarten-App erfolgreich ausgeführt? Oder Hinweise zur weiteren Untersuchung?

Antworten:


9

Die Projekte Maps on a Stick und MapBox iPad könnten Sie interessieren . (Haftungsausschluss: Entwarf das erstere, das in das letztere involviert ist. Beide sind jedoch BSD-lizenziert, und das zugrunde liegende Kachelformat, das als " .mbtiles" bezeichnet wird, basiert auf SQL.)

Maps on a Stick ist eine Offline-OpenLayers-Karte. Der Hauptgrund für die Entscheidung für eine tragbare Datenbank / einen tragbaren Server anstelle von clientseitigem Speicher ist, dass die Verwendung von Browsern als großer Datenspeicher nicht ausreichend ist und das Auffüllen und Indizieren des Caches kostspielig sein kann.


Interessante Lösung, nicht woran ich gedacht habe, aber es sieht praktikabel aus. Wie einfach oder schwierig ist es, MapBox / Maps mit benutzerdefinierten Kachelebenen auf einen Stick zu laden?
MVEXEL

1
Es ist relativ einfach: Es gibt einige Tools - einen C-basierten Importer ( github.com/developmentseed/mb_tiles_importer ), eine Version von gdal2tiles, die mbtiles ( github.com/developmentseed/gdal2mb ) ausgibt , und ein neues GUI-Tool.
tmcw

4

Denken Sie, Sie müssen Ihren eigenen Tilecache auf "localhost" erstellen (siehe http://code.google.com/p/cumberland/wiki/TilePyramiderAndOpenLayers)

Beispiele

    Using vmap
    http://localhost:8081/vmap0/levelzero/0/0.png
    The tile near the middle of the tile set in the third zoom level of vmap0.
    http://localhost:8081/vmap0/leveltwo/3/4.png
    The tile near the middle of the tile set in the fifth zoom level of landsat2000.
    hhttp://localhost:8081/vmap0/landsat2000/1/8500/8500.png
Source:
    The tile at the origin of the tile set in the first zoom level of basemap.
    http://www.osgeo.org/services/basemap/L1/0/0.png

Hinweis: Darf keine Leerzeichen enthalten


Dies ist nützlich, erfordert jedoch einen lokalen Webserver, der möglicherweise nicht immer durchführbar ist, z. B. wenn Sie möchten, dass er auf einem iPhone / iPad ausgeführt wird. Im Allgemeinen versuche ich, dies zu erreichen, ohne dass auf der Clientseite andere Anforderungen als ein HTML5 / Cache-Manifest-fähiger Webbrowser erforderlich sind.
MVEXEL


1
Ich habe in der ursprünglichen Frage bereits auf diese Seite verlinkt. Ich weiß, dass dies der richtige Weg ist, aber ich versuche herauszufinden, ob es überhaupt machbar ist.
MVEXEL

3

Eine Komplexität, die sich in Artikeln darüber zu zeigen scheint, ist:

Beachten Sie, dass der MIME-Typ der Manifestdatei text / cache-manifest ist.

Und die Beispiele scheinen alle bestimmte Dateien aufzulisten, die zwischengespeichert werden sollen (aber ich muss sie möglicherweise weiter lesen).


Das ist eine Sache, die mir nicht klar ist: ob Sie bestimmte konkrete URLs whitelisten müssen oder URL-Präfixe verwenden können. Ich konnte das noch nicht testen. Wer hat das?
MVEXEL

3

Möglicherweise ein anderer Ansatz: Geopublisher http://www.geopublishing.org/ kann Ihre Karten für die Offline-Verwendung veröffentlichen. Geopublisher ist eine Desktop-Software, mit der Sie Vektor- und Rasterdaten zusammenfügen und digitale Karten erstellen können. Anschließend können Sie diese Karte als eigenständige Java-Anwendung exportieren. Es erstellt sogar Autostart-Dateien usw. und erfordert keine Java-Installation auf den Zielcomputern.

UPDATE 2018: Geopublisher wird nicht mehr aktiv weiterentwickelt.


Hinweis: Das Ziel ist in deutscher Sprache, obwohl die URL auf die englische Sprachversion der Site verweist. Um dies zu beheben, suchen Sie den Link [english] in der linken Navigationsspalte.
Matt Wilkie
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.