随着对TileStrata的深入了解,也想尝试一下矢量瓦片的相关插件,但网上相关的资料好像不多,接下来就把我的试用过程记录下来,分享给大家。
首先了解一下该插件提供的官方示例:
这个示例发布了三种类型的服务,一种是基于protobuf(pbf)格式的矢量瓦片,一种是png瓦片,一种是geojson格式的矢量瓦片,这里主要试用pbf类型。
安装好tilestrata、tilestrata-vtile和node-mapnik模块,补足完整示例代码:
在WebStorm中,按照Openlayers加载矢量瓦片示例,简化前端代码如下(Openlayers版本用的是4系列):
用这种方式出现了个问题,就是提示跨域,原因是WebStorm启动的前端服务端口是63342,而矢量瓦片端口是7988。
因为对前端不熟悉,所以选择在服务端解决这个问题。之前看资料时发现TileStrata支持做为Express的中间件(目前不支持Koa),所以这次尝试一下。
安装express模块和express-static模块,将代码修改为如下:
将之前的前端文件拷贝到public目录下,就可以在浏览器中访问了(这里注意一下,因为将TileStrata做为Express路由,加入了maps地址,所以矢量瓦片加载地址由之前的http://localhost:7988/mylayer/{z}/{x}/{y}/t.pbf
变为http://localhost:7988/maps/mylayer/{z}/{x}/{y}/t.pbf
):
配置OSM底图:
在前端修改渲染:
根据Openlayers显示矢量瓦片信息示例,加入如下代码:
点击地图即可显示所点要素的属性:
修改渲染,分类显示:
2018年9月13日更新—————————
上边提到的跨域问题,除了使用Express之外,还有另外一种解决方案:
首先,安装tilestrata-headers组件
在代码中加入模块引用:
完整代码如下:
这样WebStorm发布出来的网页就不会提示跨域问题了。