前段时间分享了如何让矢量瓦片配图神器maputnik支持 geoserver,文章中的解决方案是,通过修改maputnik源码,在界面上增加tms协议选项,从而让maputnik支持geoserver发布的矢量瓦片。
前两天工作时发现,不修改maputnik源码,也能让它支持geoserver矢量瓦片。
原理如下:
-
maputnik本质上是mapboxgl style文件的编辑器,style文件是个json格式数据。
-
mapboxgl本身是支持geoserver tms协议矢量瓦片的,在style文件中进行相关配置就可以实现。
-
maputnik中的地图使用mapboxgl实现,不支持geoserver是因为界面上没有配置tms协议的选项,导致无法生成包含tms协议配置的style文件。
-
maputnik支持style文件的导入、导出、编辑功能,我们可以在配置geoserver数据源后,导出style文件,在style文件中手工添加tms协议相关配置,再导回maputnik,从而让它支持geoserver矢量瓦片。
具体操作方法如下:
- 打开maputnik,配置geoserver数据源。
- 把style文件下载到本地。
- 打开下载的style文件,在source中找到刚添加的geoserver数据源,手动添加tms协议选项。
- 重新导入style文件。
- 后续添加的geoserver图层就能正常显示了。
和之前修改源码的方案比较:
- 这次的方案简单灵活,普适性强,后续再遇到类似mapboxgl支持但maputnik不支持的问题,都可以使用这种方式快速解决。
- 修改源码的方案对于react框架不熟的同学可能比较吃力,但如果解决了,后续使用就会很方便,一劳永逸。
- docker版本的maputnik,无法修改源码,只能使用这次的方案解决。
总结:
- style 文件是 maputnik 和 mapboxgl 连接的唯一纽带。
- maputnik 本质上是一个mapboxgl style 文件的编辑器。
- maputnik 没有覆盖到 style 文件的所有选项,导致它不支持geoserver的矢量瓦片。
- maputnik 没有覆盖到的选项,可以通过导入、导出功能,手工编辑 style 文件来实现。
<br>
<br>
原文地址:http://gisarmory.xyz/blog/index.html?blog=maputnikGeoserverVectorTiles2
关注《GIS兵器库》, 第一时间获得更多高质量GIS文章。
本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名《GIS兵器库》(包含链接: http://gisarmory.xyz/blog/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。