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