オフラインタイルマップWebアプリ


23

これは一種のクロスオーバーなので、ここに投稿するかStackoverflowに投稿するかはわかりません。試してみましょう。

提案されているHTML5標準には、キャッシュマニフェストを使用してWebアプリケーションデータをローカルキャッシュに保存するオプションがあります。オフラインのタイル張りのWebマップアプリケーションにこの手法を使用したいと考えており、Geoserverの標準インストールに基づいてここで簡単なプロトタイプを作成しました。

デフォルトレイヤーの1つから生成されたOpenLayersクライアントページをリッピングし、<html>タグを

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

そして、cache.manifest単に読むファイルを作成しました

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

問題の私の限られた理解では、そのURLからロードするすべてのものをすべてキャッシュする必要があります:すべてのタイルとOpenLayers JS。実際、Firefoxでの最初の呼び出し時に、ローカルストレージを許可するように求められますが、更新(オンラインまたはオフライン)を押すと、OpenLayersオブジェクトが定義されていないことを示すページが鳴ります。OpenLayers JSがロードされていないようです。

オフラインのOpenLayersベースのタイル型Webマップアプリが正常に機能しましたか?または、これをさらに調査する方法についてのヒントはありますか?

回答:


9

Maps on a StickとMapBox iPadのプロジェクトに興味があるかもしれません。(免責事項:前者を設計し、後者に関与します。ただし、両方ともBSDライセンスであり、「.mbtiles」と呼ばれる基礎となるタイル形式はSQLベースです。)

Maps on a Stickは、オフラインのOpenLayersマップです。クライアント側のストレージの代わりにポータブルデータベース/サーバーを使用する主な理由は、大規模なデータストレージとしてブラウザーを使用することは十分に機能せず、キャッシュへのデータの取り込みとインデックス作成にはコストがかかる可能性があることです。


興味深い解決策は、私が考えていたものではなく、実行可能に見えます。MapBox / Maps on a Stickをカスタムタイルレイヤーで読み込むのはどれくらい簡単ですか?
mvexel

1
それは比較的簡単です:いくつかのツールがあります- Cベースの輸入(github.com/developmentseed/mb_tiles_importer)、gdal2tilesのバージョンは、その出力mbtiles(github.com/developmentseed/gdal2mb)、および今後のGUIツール。
tmcw

4

「localhost」で独自のタイルキャッシュを作成する必要があると思いますhttp://code.google.com/p/cumberland/wiki/TilePyramiderAndOpenLayersを参照してください

    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

注:スペースを含めることはできません


これは便利ですが、ローカルWebサーバーが必要です。たとえば、iPhone / iPadで実行したい場合など、常に実行できるとは限りません。一般に、HTML5 /キャッシュマニフェストに精通したWebブラウザー以外のクライアント側での要件なしでこれを達成しようとしています。
mvexel


1
元の質問でそのページに既にリンクしています。私はこれが進むべき道であることを知っていますが、それが実現可能かどうかを見つけようとしています。
mvexel

3

これに関する記事に現れると思われる複雑さの1つは、次のとおりです。

マニフェストファイルのMIMEタイプはtext / cache-manifestであることに注意してください。

また、すべての例には、キャッシュする特定のファイルがリストされているようです(ただし、さらに読む必要がある場合があります)。


それは私には明確ではないことの1つです。特定の具体的なURLをホワイトリストに登録する必要があるか、URLプレフィックスを使用できるかどうかです。私はまだこれをテストできませんでした。持っている人はいますか?
mvexel

3

たぶん別のアプローチ:Geopublisher http://www.geopublishing.org/は、オフラインで使用するためにマップを公開できます。Geopublisherは、ベクターデータとラスターデータを接続してデジタルマップを作成できるデスクトップソフトウェアです。次に、このマップをスタンドアロンJavaアプリケーションとしてエクスポートできます。自動起動ファイルなども作成し、対象のコンピューターにJavaをインストールする必要はありません。

UPDATE 2018: Geopublisherはもう積極的に開発されていません。


注:URLは英語版のサイトですが、リンク先はドイツ語です。修正するには、左側のナビゲーション列で[英語]リンクを見つけます。
マットウィルキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.