前段時間分享了如何讓矢量瓦片配圖神器maputnik支持 geoserver,文章中的解決方案是,經過修改maputnik源碼,在界面上增長tms協議選項,從而讓maputnik支持geoserver發佈的矢量瓦片。html
前兩天工做時發現,不修改maputnik源碼,也能讓它支持geoserver矢量瓦片。react
原理以下:docker
- maputnik本質上是mapboxgl style文件的編輯器,style文件是個json格式數據。
- mapboxgl自己是支持geoserver tms協議矢量瓦片的,在style文件中進行相關配置就能夠實現。
- maputnik中的地圖使用mapboxgl實現,不支持geoserver是由於界面上沒有配置tms協議的選項,致使沒法生成包含tms協議配置的style文件。
- maputnik支持style文件的導入、導出、編輯功能,咱們能夠在配置geoserver數據源後,導出style文件,在style文件中手工添加tms協議相關配置,再導回maputnik,從而讓它支持geoserver矢量瓦片。
具體操做方法以下:json
- 打開maputnik,配置geoserver數據源。
![](http://static.javashuo.com/static/loading.gif)
- 把style文件下載到本地。
![](http://static.javashuo.com/static/loading.gif)
- 打開下載的style文件,在source中找到剛添加的geoserver數據源,手動添加tms協議選項。
![](http://static.javashuo.com/static/loading.gif)
- 從新導入style文件。
![](http://static.javashuo.com/static/loading.gif)
- 後續添加的geoserver圖層就能正常顯示了。
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
和以前修改源碼的方案比較:框架
- 此次的方案簡單靈活,普適性強,後續再遇到相似mapboxgl支持但maputnik不支持的問題,均可以使用這種方式快速解決。
- 修改源碼的方案對於react框架不熟的同窗可能比較吃力,但若是解決了,後續使用就會很方便,一勞永逸。
- docker版本的maputnik,沒法修改源碼,只能使用此次的方案解決。
總結:編輯器
- style 文件是 maputnik 和 mapboxgl 鏈接的惟一紐帶。
- maputnik 本質上是一個mapboxgl style 文件的編輯器。
- maputnik 沒有覆蓋到 style 文件的全部選項,致使它不支持geoserver的矢量瓦片。
- maputnik 沒有覆蓋到的選項,能夠經過導入、導出功能,手工編輯 style 文件來實現。
<br/>spa
<br/>server
原文地址:http://gisarmory.xyz/blog/index.html?blog=maputnikGeoserverVectorTiles2htm
關注《GIS兵器庫》, 第一時間得到更多高質量GIS文章。blog
![](http://static.javashuo.com/static/loading.gif)
本文章採用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 進行許可。歡迎轉載、使用、從新發布,但務必保留文章署名《GIS兵器庫》(包含連接: http://gisarmory.xyz/blog/),不得用於商業目的,基於本文修改後的做品務必以相同的許可發佈。