6

是否有关于如何使用 TileCache 预先缓存地图的已知部分,将它们存储在 PhoneGap 移动应用程序数据库中并使用 OpenLayers 加载它们的好教程?

我经历了很多教程,但我仍然没有想出办法一起做所有这些。

4

1 回答 1

1

如果您有自己的图块并将它们嵌入到应用程序存档中,则可以使用 Leaflet 来呈现本地图块。http://leafletjs.com/
如果您的自定义切片是远程的(托管在服务器上),那么您仍然无法在离线场景中使用它们。
请看看这个博客。

是的,完全有可能离线使用传单瓷砖,只需将用于瓷砖的路径更改为本地路径。

例如:
默认值:

// add a CloudMade tile layer with style #997
L.tileLayer('http://{s}.tile.cloudmade.com/[API-key]/997/256/{z}/{x}/{y}.png', {
    attribution: 'Map data'
}).addTo(map);

离线 :


L.tileLayer('file://path_to_your_tiles/{z}{x}{y}.png', {
    attribution: 'Map data'
}).addTo(map);

只需确保您的瓷砖以相同的图案命名(例如:6_17_15.png)。您可以将模式更改为。

您可以使用目录结构在本地存储地图切片以匹配服务器并将您的 tileLayer 指向切片的本地位置。不过要记住的一件事是,如果您将他们的图块整体刮掉然后在本地存储,一些地图图块的供应商会感到不安。如果您编写的应用程序鼓励许多使用该应用程序的人这样做,他们会特别沮丧。这样的应用程序很可能会很快被阻止。例如,参见http://wiki.openstreetmap.org/wiki/Tile_usage_policy 。您始终可以渲染自己的图块以在本地保存。

于 2012-11-21T15:36:07.920 回答