Leaflet 有离线地图层吗?
Is there an offline Map layer available for Leaflet?
Leaflet 有离线地图层吗?我不需要详细的,但基本的几何就足够了。
您当然可以设置自己的离线地图(栅格图块 and/or 矢量形状)。难度或开箱即用的可用性取决于您想要的信息类型和详细程度。
GeoJSON:
最简单的方法是,如果您只需要世界各国的边界且没有太多细节,只需获取轮廓即可。在这种情况下,您可以在 Internet 上找到包含数百 kB(单个普通大图像的重量)数据的 GeoJSON 文件,例如https://github.com/johan/world.geo.json
然后只需使用 L.geoJson(geoJsonData).addTo(map)
即可显示。
演示:http://plnkr.co/edit/aB6p7IC2cF7xW41Ju8m7?p=preview
下载的磁贴:
一个更复杂(技术上和合同上)但仍然易于管理的情况是,如果您想要光栅图块(例如 OSM 网站)。您可以从在线服务器下载图块(只是普通图像),然后离线使用它们。这称为 "tiles scraping" 或“tiles bulk downloading”。
至于技术方面(您可能需要下载 数千 个单独的图像,具体取决于您想离线使用的缩放级别/细节),有几个软件可用(看看上面的 OSM Wiki link)。
至于合同方面,许多磁贴服务器(例如 OSM)在其使用条款中明确要求不执行批量下载(因为它会产生高需求并在其服务器上使用高带宽)。所以你应该寻找一个接受这种用法的服务。
在本地渲染图块:
一个完全授权的解决方案(但技术上最复杂)是download the raw OSM data,并通过软件使用它来生成您的地图(无论是光栅图块还是矢量形状)。
您可能会在 Internet 上找到提供下载简化的 OSM 数据的服务(整个地球的完整数据库压缩了约 30 GB……)或一个小的地理区域(参见上面的 OSM Wiki link).
关于软件,问题评论(http://wiki.openstreetmap.org/wiki/Rendering)中chrki提供的link应该可以让你入门。
特别是,您可以很好地一次生成光栅图块,保存它们并摆脱渲染软件,因此您可以像刮擦它们一样使用这些图块。
这里是一个使用 NeDB 的例子和对此 project/examples https://github.com/tbicr/OfflineMap: https://github.com/KD0NKS/APRSViewJS/blob/master/js/techpire/LayerManager.js 的修改。这只会缓存用户已经查看过的内容,避免从 osm 服务器批量下载。
还有一个传单插件:https://github.com/MazeMap/Leaflet.TileLayer.PouchDBCached
您可以构建自己的本地osm 服务器。使用 Ubuntu 非常容易,因为它有专门的软件包。这个伟大的资源描述了安装过程:switch2osm.org
Leaflet 有离线地图层吗?我不需要详细的,但基本的几何就足够了。
您当然可以设置自己的离线地图(栅格图块 and/or 矢量形状)。难度或开箱即用的可用性取决于您想要的信息类型和详细程度。
GeoJSON:
最简单的方法是,如果您只需要世界各国的边界且没有太多细节,只需获取轮廓即可。在这种情况下,您可以在 Internet 上找到包含数百 kB(单个普通大图像的重量)数据的 GeoJSON 文件,例如https://github.com/johan/world.geo.json
然后只需使用 L.geoJson(geoJsonData).addTo(map)
即可显示。
演示:http://plnkr.co/edit/aB6p7IC2cF7xW41Ju8m7?p=preview
下载的磁贴:
一个更复杂(技术上和合同上)但仍然易于管理的情况是,如果您想要光栅图块(例如 OSM 网站)。您可以从在线服务器下载图块(只是普通图像),然后离线使用它们。这称为 "tiles scraping" 或“tiles bulk downloading”。
至于技术方面(您可能需要下载 数千 个单独的图像,具体取决于您想离线使用的缩放级别/细节),有几个软件可用(看看上面的 OSM Wiki link)。
至于合同方面,许多磁贴服务器(例如 OSM)在其使用条款中明确要求不执行批量下载(因为它会产生高需求并在其服务器上使用高带宽)。所以你应该寻找一个接受这种用法的服务。
在本地渲染图块:
一个完全授权的解决方案(但技术上最复杂)是download the raw OSM data,并通过软件使用它来生成您的地图(无论是光栅图块还是矢量形状)。
您可能会在 Internet 上找到提供下载简化的 OSM 数据的服务(整个地球的完整数据库压缩了约 30 GB……)或一个小的地理区域(参见上面的 OSM Wiki link).
关于软件,问题评论(http://wiki.openstreetmap.org/wiki/Rendering)中chrki提供的link应该可以让你入门。
特别是,您可以很好地一次生成光栅图块,保存它们并摆脱渲染软件,因此您可以像刮擦它们一样使用这些图块。
这里是一个使用 NeDB 的例子和对此 project/examples https://github.com/tbicr/OfflineMap: https://github.com/KD0NKS/APRSViewJS/blob/master/js/techpire/LayerManager.js 的修改。这只会缓存用户已经查看过的内容,避免从 osm 服务器批量下载。
还有一个传单插件:https://github.com/MazeMap/Leaflet.TileLayer.PouchDBCached
您可以构建自己的本地osm 服务器。使用 Ubuntu 非常容易,因为它有专门的软件包。这个伟大的资源描述了安装过程:switch2osm.org