javascript - React Leaflet - 让 Tiles 离线
问题描述
我使用leaflet.offline,它允许将图块保存在indexedDB 中。通过单击“L.control”按钮完成备份。我希望每次启动地图时自动备份(没有按钮)。如何使用leaflet.offline 或您知道另一种方式吗?
图层创建 - 工作正常
const tileLayerOffline = L.tileLayer.offline(
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
{
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors',
subdomains: "abc",
crossOrigin: true,
minZoom: 13,
maxZoom: 16,
}
)
启动按钮
const controlSaveTiles = L.control.savetiles(tileLayerOffline, {
zoomlevels: [13, 16], // optional zoomlevels to save, default current zoomlevel
});
controlSaveTiles.addTo(map);
解决方案
看源码,savetiles
控制按钮触发_saveTiles()
方法。controlSaveTiles
您可以直接在包含对savetiles
控件的引用的变量上调用此方法。
const controlSaveTiles = L.control.savetiles(tileLayerOffline, {
zoomlevels: [13, 16]
});
controlSaveTiles._saveTiles(); // no need to addTo(map), just save
创建控制按钮的代码: https ://github.com/allartk/leaflet.offline/blob/master/src/ControlSaveTiles.js#L123
保存瓦片的方法: https ://github.com/allartk/leaflet.offline/blob/master/src/ControlSaveTiles.js#L144
推荐阅读
- rest - 如何将中间件应用于 gorilla/mux 路由
- video - HTTP Live Streaming - m3u8 文件中的字节范围
- sorting - tableHead上的onHover文字怎么可以编辑material-ui
- azure - 如何使用 Azure 存储队列逻辑应用连接器设置队列消息的过期 (TTL)?
- java - 在 Java Swing 中为 JRadio 按钮分配属性
- c# - 自定义语法高亮颜色设置在下次启动时重置/覆盖
- node.js - 如何在firestore db中使用破折号访问地图类型变量
- python - 如何删除解析日期和时间列后出现的额外零
- vue.js - Vuelidate 服务器端验证
- regex - 如何在 PosgreSQL 中将模式与正则表达式匹配?