如何让矢量瓦片配图神器maputnik支持 geoserver (2)

上面示例的代码中,数据源是通过source来配置的

"source": { "type": "vector", 'scheme':'tms', "tiles": ["http://192.168.50.198:7000/geoserver/gwc/service/tms/1.0.0/china%3Acity_region@EPSG%3A900913@pbf/{z}/{x}/{y}.pbf"], },

这里面有三个参数,type和tiles的意思好理解,scheme是什么意思呢?

查看mapboxgl的api,关于的解释如下:

image-20201011142510634

这个 xyz和tms分别是啥意思呢?

百度后觉得这篇博客写的还算明白,它们是两种请求瓦片的协议,不同协议对瓦片编号的规则也不同,在xyz协议中,Y从顶部开始计算,而在tms协议中,Y从底部开始计算。mapboxgl默认使用xyz协议,而geoserver发布的是tms协议。所以调用时需要定义scheme为tms。

问题找到这里,感觉自己已经看到黎明的曙光了。

那如果把示例中的scheme设置为xyz会不会出现和Maputnik一样的错误呢?尝试后答案是肯定的,地图同样跑到了南半球。

image-20201011173212261

真相大白了,Maputnik界面上因为没有配置scheme的选项,而scheme默认是xyz协议,所以就导致它只支持xyz协议,不支持tms协议,所以就请求不到瓦片,地图无法正确显示。

如何解决

问题找到了,接下来就是如何解决,思路有二:

geoserver发布一个xyz协议的矢量瓦片服务。

修改一下Maputnik的源码,增加scheme的选项,让它支持tms协议。

思路一自己找了一圈,没有发现相关教程,个人感觉思路二更简单一些,只要在下图的红框的位置加个选择scheme的下拉框就能解决问题

image-20201011173847958

下载maputnik的源码,一通研究,发现修改下面两个位置就可以:

1、在这里加一个下拉框控件

image-20201011174911575

2、在这里给scheme设置一下默认值

image-20201011175014061

ok,来,走两步

一步

image-20201011175322458

两步

image-20201011180144760

哈哈,效果杠杠的!问题完美解决。

总结

Maputnik是一个矢量瓦片配图工具,可以替代 mapbox studio,免费使用。

Maputnik默认只支持xyz协议的矢量瓦片,不支持geoserver发布的tms协议矢量瓦片。

Maputnik的地图api使用的是mapboxgl,mapboxgl通过设置source的scheme选项,可以支持tms协议。

通过修改Maputnik源码,增加scheme选项,就可以让Maputnik支持geoserver发布的tms协议矢量瓦片。

源码

支持tms矢量瓦片的maputik源码

原文地址:?blog=maputnikGeoserverVectorTiles

关注《GIS兵器库》公众号, 第一时间获得更多高质量GIS文章。

如何让矢量瓦片配图神器maputnik支持 geoserver

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名《GIS兵器库》(包含链接:  ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjfdg.html