一、原理:
1.首先在前端依赖js类库算法将当前的地图范围(extent)和缩放级别(extent)自动计算出列号(x)、行号(y)、级别(z)。会计算出多个瓦片坐标(z,x,y)。
2.将这些瓦片坐标当做实参({z}、{x}、{y})依次循环传入到后台的服务(后台对应着三个形参)
3.将瓦片坐标转换为经纬度,因为只有这样才能依靠经纬度(4326)或平面坐标(3857)范围查询对应数据库的数据。
4.将查询出的数据转换为mvt格式(实际是一个二进制流格式数据)。
SELECT ST_AsMVT(tile,'lines',4096,'geom') tile FROM(SELECT fs_name,ST_AsMVTGeom(geom,ST_Transform(ST_MakeEnvelope(%s,%s,%s,%s, 4326),3857),4096, 256, true) AS geom FROM public.pipesectionmpa_4326_3857 ) AS tile;
5.依次返回给前端,前端将数据绘制到地图上。另外,可以根据match对某个字段值进行分值设色。
6.通过arcgis js 3.27加载,有一点需要说明,通过arcgis js加载match这个不好使,目前不知道怎么回事。