首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >离线地图传单:如何存储地图供离线使用?

离线地图传单:如何存储地图供离线使用?
EN

Stack Overflow用户
提问于 2020-07-20 06:07:42
回答 2查看 1.7K关注 0票数 0

我想保存一个具有特定边界的OSM映射,以便在我的文件系统中脱机使用,而不是在web浏览器之外使用任何DB。之后,我想在离线时用传单库渲染地图。这有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-21 00:49:35

我怀疑这可能是一个XY问题,在web浏览器的缓存中从外部提供者保存瓷砖听起来只是最初目标离线使用的许多解决方案中的一种,而不必使用(或者实际上不安装?)客户端的数据库。

如果是这样的话,@IvanSanchez的Leaflet.TileLayer.MBTiles插件就可以满足要求:虽然mbtiles文件在技术上是一个数据库,但它包含在一个可移植的文件中,而不需要安装(它是一个SQLite文件)。

大小可能在浏览器缓存上,但如果您对客户端有某种控制,则只需在文件系统上复制它。然后,您也可以从文件系统或本地服务器打开HTML页面,这也将与脱机使用更加一致。

票数 2
EN

Stack Overflow用户

发布于 2020-07-20 20:21:26

我认为这方面有两种主要办法:

  1. 使用IndexedDBWebSQLWeb存储和/或相关的浏览器数据库. 据我所见,大多数开发人员更喜欢依赖于封装这些技术的库来提供跨浏览器的一致支持(因为并非所有浏览器都支持所有这些技术)。让我引用MDN的话: 注意: IndexedDB API功能强大,但对于简单的情况来说可能太复杂了。如果您想要一个简单的API,可以尝试一些库,比如localForage、dexie.js、ZangoDB、PouchDB、idb、idb、JsStore和lovefield,它们使IndexedDB更易于编程。

特别是,一种PouchDB支持的小册子的实现是可用的;但不要因此而妨碍您探索其他选项。

  1. 使用ServiceWorker的能力将东西存储在浏览器的Cache上。 ServiceWorker能够捕获网页发出的所有网络请求,包括tiles (即使分配器位于不同的域名)。然后,可以应用-based缓存技术。在此之后,甚至应该可以向ServiceWorker发送消息来为缓存注入种子(或者仅仅为这些块发出足够的fetch请求)。 我不知道(在撰写本文时)任何简单的传单集成。实现包括使用清单代码创建指向JS文件的ServiceWorker,以及缓存机制的实现。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62989519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档