引言
图层组有利于快速管理大量的图层,iserver发布地图服务也是支持地图图层组嵌套的,但是在mapboxgl中如何单个加载rest地图服务嵌套图层组中的单个图层,那就需要往下阅读了。
发布服务
服务实例:
-
本文示例地图服务的图层结构如下;
【地图】-【图层组】-【图层组】-【子图层】
-
rest地图在外层图层组示例;
-
下一级图层组示例
; -
子图层示例
;
5. 子图层ID进入预览图层页面,可以看到url中有当前图层的layerID;
6.子图层ID规则
关键代码
根据子图层ID单独加载对应图层
var t1 = '[0:0.0.1]'//第一个图层组下第一个图层组中第二个子图层的LayerID
var map = new mapboxgl.Map({//例子中地图为地理坐标系
container: 'map',
style: {
"version": 8,
"sources": {
"raster-tiles": {
"attribution": "Burce Lee`s example",
"type": "raster",
"tiles": ['http://xx.xx.xx.xx:8090/iserver/services/map-WorldUdbx/rest/maps/worldGroup/zxyTileImage.png?prjCoordSys='
+encodeURIComponent('{"epsgCode":4326}')+'&z={z}&x={x}&y={y}&noWrap=true&transparent=true&cacheEnabled=false&layersID='+ t1],
"tileSize": 256,
}
},
"layers": [{
"id": "simple-tiles",
"type": "raster",
"source": "raster-tiles",
"minzoom": 0,
"maxzoom": 22
}
],
},
center: [0, 0],
maxZoom: 18,
zoom: 2
});
总结
这种方法不需要在iserver创建临时图层资源,减轻了服务端的压力,也解决了单独加载子图层的需求,与之配套的还有图层显隐功能,请查看,【mapboxgl叠加单个图层】与【mapboxgl控制图层显隐】。