前端有没有离线的地图服务? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
hoythan
V2EX    Javascript

前端有没有离线的地图服务?

  •  
  •   hoythan 2020-11-03 17:57:00 +08:00 4507 次点击
    这是一个创建于 1815 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目需要在内网运行,但是高德百度等均无法通过 jsapi 接口实现离线地图。大家有什么好的方法吗?

    8 条回复    2020-12-19 13:02:18 +08:00
    BL1tCL9N5bspXB39
        1
    BL1tCL9N5bspXB39  
       2020-11-03 18:21:05 +08:00
    离线地图主要解决的是瓦片存储问题,而不是 js-api
    jinliming2
        2
    jinliming2  
       2020-11-03 21:04:20 +08:00   2
    OpenStreetMap ( OSM )自己下载全球(或是指定区域)地图数据,根据自己的需要渲染地图,自己假设地图瓦片服务器。
    配合 Leaflet 地图库,几乎可以涵盖高德百度地图的所有功能。

    这一套完全可以离线部署。

    另外关于 OSM 自己下载数据渲染这一步,如果觉得麻烦的话,可以写个爬虫,直接去爬 geoq 或是 wikimedia 的瓦片图,下载下来自己搭个静态文件服务就行了。
    bazingaterry
        3
    bazingaterry  
       2020-11-03 22:53:17 +08:00   1
    phobal
        4
    phobal  
       2020-11-04 08:57:23 +08:00 via iPhone   1
    楼上说的自己搭建瓦片服务是可行的,但成本会非常高,需要懂 GIS 的才玩得转。

    其实有个简单的方法,可以跟领导沟通下,让运维人员将高德或者百度地图 api 的域名加入到白名单中,这样是最简单的。
    huifer
        5
    huifer  
       2020-11-04 08:58:06 +08:00   1
    可以尝试自行搭建 wms 服务或者其他类似 wms 服务 (WMS-C\TMS\WMTS\WFS\WCS.列举可能不够详细) , 数据来源可以自行搜索. 自荐一下工具: https://github.com/huifer/tianditu-python 用来下载天地图的切片和 poi 数据. openlayers 自定义瓦片加载示例文章: https://blog.csdn.net/staHuri/article/details/88846239
    bojue
        6
    bojue  
       2020-11-04 09:40:35 +08:00   1
    资源:自己写一个地图下载器下载瓦片图 /或者找一个
    前端:通过 leafletjs 提供展示
    服务端:可以使用 node 写一个资源服务器或者使用 Geoserver 做地图服务
    ilingfeng
        7
    ilingfeng  
       2020-11-04 10:11:56 +08:00   1
    瓦片图估计会很大,我前两天也搭了个,百度的,只是简单的拼拼凑凑会用,因为项目只是为了验收,我也只下了一个县市的 17 级瓦片,有将近 80M 的大小
    rocwang
        8
    rocwang  
       2020-12-19 13:02:18 +08:00 via iPhone   2
    我正好做过一个业余个人项目,实现了浏览器端离线地图(缓存后)。

    Demo: https://bus.kiwiberry.nz/favourites?isCollapsed=yes
    代码: https://github.com/rocwang/bus

    大致方案:

    1. 去 https://openmaptiles.org/ 下载矢量地图包( sqlite db )。
    2. 用 https://github.com/ibesora/vt-optimizer 去除不需要的图层以减小地图包体积。
    3. 把地图用到的字体文件也写入地图包。
    3. 用 brotli 压缩整个地图包,进一步减小其体积。
    4. 把制作好的地图包另解压一份,以零散的字体文件和瓦片文件存储,以供浏览器无缓存第一次访问时使用。
    5. 在前端实现 service worker,在 cache storage 中缓存压缩好的地图包。
    6. 后续所有地图瓦片,字体的请求,均由 service worker 本地处理使用 https://github.com/kripken/sql.js/ 在浏览器中直接查询基于 sqlite 的地图包,生成响应后直接返回给前端,从而实现离线地图。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1345 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 16:54 PVG 00:54 LAX 09:54 JFK 12:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86