Offline aplikacja internetowa z mapami

23

Nie jestem pewien, czy opublikować to tutaj, czy na Stackoverflow, ponieważ jest to coś w rodzaju crossovera. Pozwól mi spróbować.

W proponowanym standardzie HTML5 istnieje możliwość przechowywania danych aplikacji internetowej w lokalnej pamięci podręcznej przy użyciu manifestu pamięci podręcznej . Szukam do wykorzystania tej techniki dla aplikacji internetowych w trybie offline kafelki mapy i zrobił szybki prototyp tutaj na podstawie standardowej instalacji z GeoServer.

Właśnie zgrałem stronę klienta OpenLayers wygenerowaną z jednej z domyślnych warstw i zmieniłem <html>tag na

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

I utworzył plik, cache.manifestktóry po prostu czyta

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

Które, w moim ograniczonym rozumieniu sprawy, lokalnie buforują wszystko, co ładuje się z tego adresu URL: wszystkie kafelki i OpenLayers JS. W rzeczywistości, po pierwszym wywołaniu w Firefoksie, prosi mnie o zezwolenie na lokalne przechowywanie, ale kiedy uderzę w odświeżanie - w trybie online lub offline - strona zaskrzecza, stwierdzając, że obiekt OpenLayers nie jest zdefiniowany. Wygląda na to, że nie załadował JS OpenLayers.

Czy ktoś z powodzeniem działał w trybie offline opartej na OpenLayers kafelkowej aplikacji do map internetowych? Lub wskazówki, jak dalej to zbadać?

mvexel
źródło

Odpowiedzi:

9

Mogą Cię zainteresować projekty Maps on a Stick i MapBox iPad. (zrzeczenie się odpowiedzialności: zaprojektowano pierwszą z nich, zaangażowaną w drugą. jednak oba są licencjonowane przez BSD, a podstawowy format kafelka, zwany „ .mbtiles”, jest oparty na SQL.)

Maps on a Stick to offline mapa OpenLayers. Głównym powodem korzystania z przenośnej bazy danych / serwera zamiast pamięci po stronie klienta jest to, że używanie przeglądarek jako dużego magazynu danych nie jest dość dopracowane, a zapełnianie i indeksowanie pamięci podręcznej może być kosztowne.

tmcw
źródło
Ciekawe rozwiązanie, nie o czym myślałem, ale wygląda na wykonalne. Jak łatwo lub trudno jest załadować MapBox / Maps na patyk z niestandardowymi warstwami płytek?
mvexel
1
Jest to stosunkowo proste: istnieje kilka narzędzi - importer oparty na C ( github.com/developmentseed/mb_tiles_importer ), wersja gdal2tiles, która wyprowadza mbtiles ( github.com/developmentseed/gdal2mb ) oraz nadchodzące narzędzie GUI.
tmcw
4

Myślisz, że będziesz musiał stworzyć swój własny tilecache na 'localhost' patrz http://code.google.com/p/cumberland/wiki/TilePyramiderAndOpenLayers

Przykłady

    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

Uwaga: nie może mieć spacji

Mapperz
źródło
Jest to przydatne, ale wymaga lokalnego serwera WWW, co nie zawsze jest możliwe, np. Gdy chcesz, aby działał na iPhonie / iPadzie. Ogólnie rzecz biorąc, staram się to osiągnąć bez żadnych wymagań po stronie klienta innych niż zręczna przeglądarka internetowa manifestująca pamięć podręczną HTML5 / pamięć podręczną.
mvexel
1
Odniosłem się już do tej strony w pierwotnym pytaniu. Wiem, że taka jest droga, ale staram się dowiedzieć, czy jest to w ogóle wykonalne.
mvexel
3

Jedną ze złożoności, która wydaje się pojawiać w artykułach na ten temat, jest:

Zauważ, że typ MIME pliku manifestu to text / cache-manifest.

Wszystkie przykłady wydają się zawierać listę konkretnych plików do buforowania (ale być może będę musiał przeczytać więcej).

Ian Turton
źródło
To jedna rzecz, która nie jest dla mnie jasna: czy chcesz umieścić na liście konkretne konkretne adresy URL, czy możesz użyć prefiksów adresów URL. Nie byłem jeszcze w stanie tego przetestować. Ktoś kto ma?
mvexel
3

Może inne podejście: Geopublisher http://www.geopublishing.org/ może publikować twoje mapy do użytku offline. Geopublisher to oprogramowanie komputerowe, które pozwala łączyć ze sobą dane wektorowe i rastrowe oraz tworzyć cyfrowe mapy. Następnie możesz wyeksportować tę mapę jako samodzielną aplikację Java. Tworzy nawet pliki autostartu itp. I nie wymaga instalacji Java na docelowych komputerach.

AKTUALIZACJA 2018: Geopublisher nie jest już aktywnie rozwijany.

alfonx
źródło
Uwaga: Miejsce docelowe jest w języku niemieckim, mimo że adres URL jest w angielskiej wersji witryny. Aby to naprawić, zlokalizuj link [angielski] w kolumnie nawigacji po lewej stronie.
matt wilkie