Application Web de carte carrelée hors ligne


23

Je ne sais pas si je dois poster ceci ici ou sur Stackoverflow, car c'est une sorte de croisement. Permettez-moi de l'essayer.

Dans la norme HTML5 proposée, il est possible de stocker les données d'application Web dans un cache local à l'aide d'un manifeste de cache . Je cherche à utiliser cette technique pour une application de carte Web en mosaïque hors ligne et j'ai fait un prototype rapide ici basé sur une installation standard de Geoserver.

Je viens d'extraire la page du client OpenLayers qui est générée à partir de l'une des couches par défaut et j'ai changé la <html>balise en

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

Et créé le fichier cache.manifestqui lit simplement

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

Ce qui devrait, dans ma compréhension limitée de la question, mettre en cache localement tout ce qui se charge à partir de cette URL: toutes les tuiles et OpenLayers JS. En fait, lors du premier appel dans Firefox, il me demande d'autoriser le stockage local, mais lorsque je clique sur Actualiser - en ligne ou hors ligne - la page croque indiquant que l'objet OpenLayers n'est pas défini. Il semble qu'il n'ait pas chargé l'OpenLayers JS.

Quelqu'un a-t-il réussi à utiliser une application de carte Web carrelée hors ligne basée sur OpenLayers? Ou des conseils sur la façon d'enquêter davantage?

Réponses:


9

Vous pourriez être intéressé par les projets Maps on a Stick et MapBox iPad. (Avertissement: conçu le premier, impliqué dans le second. Cependant, les deux sont sous licence BSD, et le format de tuile sous-jacent, appelé " .mbtiles", est basé sur SQL.)

Maps on a Stick est une carte OpenLayers hors ligne. Le principal raisonnement pour aller avec une base de données / serveur portable au lieu du stockage côté client est que l'utilisation de navigateurs comme stockage de données volumineux n'est pas tout à fait établie et que le remplissage et l'indexation du cache peuvent être coûteux.


Solution intéressante, pas ce à quoi je pensais mais elle semble réalisable. Est-il facile ou difficile de charger MapBox / Maps sur un Stick avec des couches de tuiles personnalisées?
mvexel

1
C'est relativement simple: il existe quelques outils - un importateur basé sur C ( github.com/developmentseed/mb_tiles_importer ), une version de gdal2tiles qui génère des mbtiles ( github.com/developmentseed/gdal2mb ) et un outil GUI à venir.
tmcw

4

Pensez que vous devrez créer votre propre tilecache sur «localhost», voir http://code.google.com/p/cumberland/wiki/TilePyramiderAndOpenLayers

Exemples

    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

Remarque: ne doit pas avoir d'espaces


Ceci est utile mais nécessite un serveur Web local, ce qui n'est pas toujours possible, par exemple lorsque vous souhaitez qu'il s'exécute sur un iPhone / iPad. En général, je cherche à y parvenir sans aucune exigence côté client autre qu'un navigateur Web averti HTML5 / cache manifeste.
mvexel


1
J'ai déjà lié à cette page dans la question d'origine. Je sais que c'est la voie à suivre, mais j'essaie de savoir si c'est faisable du tout.
mvexel

3

Une complexité qui semble apparaître dans les articles à ce sujet est la suivante:

Notez que le type MIME du fichier manifeste est text / cache-manifest.

Et les exemples semblent tous lister des fichiers spécifiques à mettre en cache (mais je devrai peut-être lire plus loin).


C'est une chose qui n'est pas claire pour moi: si vous devez ajouter des URL concrètes spécifiques à la liste blanche ou si vous pouvez utiliser des préfixes d'URL. Je n'ai pas encore pu tester cela. Quelqu'un qui l'a fait?
mvexel du

3

Peut-être une autre approche: Geopublisher http://www.geopublishing.org/ peut publier vos cartes pour une utilisation hors ligne. Geopublisher est un logiciel de bureau qui vous permet de connecter des données vectorielles et raster et de créer des cartes numériques. Vous pouvez ensuite exporter cette carte en tant qu'application Java autonome. Il crée même des fichiers de démarrage automatique, etc. et ne nécessite pas d'installation Java sur les ordinateurs ciblés.

MISE À JOUR 2018: Geopublisher n'est plus activement développé.


note: La destination est en allemand même si l'url est vers la version anglaise du site. Pour corriger, localisez le lien [français] dans la colonne de navigation de gauche.
matt wilkie
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.