API 4:将特性服务中的所有层添加到映射中

551
1
跳到解决方案
06-22-2021 07:51 am
LukasWursch
通过
新贡献者III

你好

我想使用JS Api 4加载托管功能服务的所有层。可以像这样给地图添加一个图层:

layer = new FeatureLayer({portalItem: {id: portalItemId} layerId: 0});map.add(层);

是否有一种方法来列出或计算托管功能服务中的所有层(使用JS API 4),以便它们中的每一个都可以使用新的FeatureLayer添加?

或者有没有一种直接的方法将托管功能服务的所有层添加到映射中?

亲切的问候

卢卡斯

标签(3)
0荣誉
1解决方案

接受的解决方案
LukasWursch
通过
新贡献者III

我发现这是可能的,使用REST api获得层数,然后单独添加每一层。如果有更直接的方法,请让我知道。

//获取服务中的层数let url = "…?f=pjson";//来自门户页面的特性服务url esriRequest(url, {responseType: "json"}).then(function(response){let responseJSON = response.data;let numberOfLayers = responseJSON.layers.length;//加载每个服务层(let I = 0;i < numberOfLayers;i++) {layer = new FeatureLayer({portalItem: {id: "…"}, layerId: i});map.add(层);}});

在原帖子中查看解决方案

1回复
LukasWursch
通过
新贡献者III

我发现这是可能的,使用REST api获得层数,然后单独添加每一层。如果有更直接的方法,请让我知道。

//获取服务中的层数let url = "…?f=pjson";//来自门户页面的特性服务url esriRequest(url, {responseType: "json"}).then(function(response){let responseJSON = response.data;let numberOfLayers = responseJSON.layers.length;//加载每个服务层(let I = 0;i < numberOfLayers;i++) {layer = new FeatureLayer({portalItem: {id: "…"}, layerId: i});map.add(层);}});