0

我在Angular应用程序内的 Esri 地图中集成了一个地块图层。现在我想过滤并仅显示满足以下条件的特定包裹。

building_area 等于 0,Number_of_units 同样等于 0。

如何根据这些条件过滤要素图层?

.ts

    const parcelLayer = new FeatureLayer({
                url: this.featureLayerUrl,
                });
    
       const esriLayers = [parcelLayer,ageLayer];
    
            const map = new Map({
              basemap: 'topo-vector',
              layers: esriLayers
          });
            const view = new MapView({
              container,
              map: map,
              zoom: 4,
              center: [-97.63, 38.34],
            });

      const createEsriPopupTemplate = function(layer) {
      const config = {
        fields: layer.fields.map(field => (
            {
                name: field.name,
                type: field.type,
                alias: formatName(field.alias)
            }
        )),
        title: formatName(layer.title)
    };
    return popupUtils.createPopupTemplate(config);
  }
    
     for (const layer of esriLayers) {
        view.whenLayerView(layer).then(function (layerView) {
            const popupTemplate = createEsriPopupTemplate(layer)
            if (!popupTemplate) {
                console.log("FeatureLayer has no fields.")
            } else {
                layer.popupTemplate = popupTemplate;
            }
        });
      }
4

1 回答 1

0

您可以使用FeatureLayer definitionExpression属性来实现您的目标。

ArcGIS JS API - 要素层定义表达式

此属性允许您过滤将向服务器请求的要素,并因此显示在地图中。这是一种过滤图层数据以进行分析、查看和执行的非常强大的方法。

在你的情况下,这应该有效,

const parcelLayer = new FeatureLayer({
    url: this.featureLayerUrl,
    definitionExpression: "building_area=0 AND Number_of_units=0"
});
于 2021-12-21T17:56:31.487 回答