本人之前使用的矢量瓦片服务是用geoserver发布而来,详细步骤可以查阅:http://www.kingpika.top:5599/post/58。
这种方式有一个问题就是当你的数据库新添了一个表后你必须用geoserver发布一下才能使用它的矢量瓦片,因为业务需要,数据库中可能会动态添加进表,要动态的产生矢量服务,在此找到如下解决方案:
一、服务端搭建:
1.首先从该地址下载服务端代码,https://github.com/LawAlias/postile,这里使用的是sanic框架,需要python3环境。
下载完毕之后cd进文件夹内,运行python3 setup.py build,成功之后运行python3 setup.py install,可能会出现sanic版本错误,按照指示安装指定版本的sanic即可。大问题可能是提示你需要c++的运行环境,点击这里下载安装即可:https://pan.baidu.com/s/1A4bHLYY66H3SCF75-NCbkA提示一下需要4g的硬盘空间噢。
安装postgresql 2.4及以上版本,安装postgis扩展,并导入需要发布的数据。
2.环境安装完毕后,修改代码,主要是数据库连接字符:
也可以在启动时输入数据库连接参数进行修改,在这就先用改代码的方法,将上述字符改成对应的账户名、密码、ip、端口号、数据库名称。
3.启动:cd到postile文件夹下,输入:
其中—cors的意思是允许跨域,否则就会出现跨域问题。
同理输入如下参数可进行相应配置:
例如你要在服务端和生产环境启动,可再输入—listen 0.0.0.0 —listen-port 3351 —debug False
启动完成之后在前端调用。
二、前端调用
1.mapbox调用:
在这重点要把style文件写对:
其中interline即为需要调用的图层名称,参数field为返回的数据中包含的字段,多个字段用,隔开,默认返回全部字段。
示例地址:http://www.kingpika.top:3392/mapbox/mapboxstyle.html
2.leaflet加载效果奇差:http://www.kingpika.top:3392/leaflet/vectortiles.html
3.maptalks因为使用了mapbox-gl的原因,加载效果和mapbox差不多:http://www.kingpika.top:3392/maptalks/demo/
4.leaflet-mapboxGL:这里使用了mapboxGL和leaflet结合的方式:http://www.kingpika.top:3392/leaflet-mapboxGL/examples/basic.html