FAQ
ArcGIS Maps SDK for JavaScript : レイヤーのフィルター設定

ナレッジ番号:5609 | 登録日:2023/08/15 | 更新日:2024/01/17

概要

ArcGIS Maps SDK for JavaScript の MapImageLayer クラスや FeatureLayer クラスは、 特定の条件に合ったフィーチャのみ表示させるフィルター設定をすることができます。

実装

MapImageLayer

MapImageLayer クラスの場合、各サブレイヤーの definitionExpression プロパティを使用してレイヤーフィルターを設定しています。
サブレイヤーの取得はマップ サービスに含まれるレイヤーの配列を設定することで実装できます。
サンプルコード:
require([
    "esri/Map",
    "esri/views/MapView",
    "esri/layers/MapImageLayer",
], function(
    Map,
    MapView,
    MapImageLayer
) {
    const map = new Map({
        basemap: "topo-vector"
    });

    const view = new MapView({
        container: "viewDiv",
        map: map,
        center: [-120, 37],
        zoom: 6
    });

    // MapImageLayer を作成します
    let usaLayer = new MapImageLayer({
        url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer"
    });

    // definitionExpression プロパティに条件式を設定し、サブレイヤーごとにフィルターの条件を設定します。
    // id プロパティの番号は、マップ サービスに含まれるサブレイヤーのインデックス番号と対応しています。
    usaLayer.sublayers = [{
            id: 3,
            definitionExpression: "state_name = 'California'"
        },
        {
            id: 0,
            definitionExpression: "pop2000 > 100000"
        },
    ]

    map.add(usaLayer);
});

FeatureLayer

FeatureLayer クラスの場合、definitionExpression プロパティにフィルターの条件を指定することで実装できます。
サンプルコード:
require([
    "esri/Map",
    "esri/views/MapView",
    "esri/layers/FeatureLayer",
], function(
    Map,
    MapView,
    FeatureLayer
) {
    const map = new Map({
        basemap: "topo-vector"
    });

    const view = new MapView({
        container: "mapDiv",
        map: map,
        center: [-120, 37],
        zoom: 6
    });

    // FeatureLayer を作成します
    const usaLayer = new FeatureLayer({
        url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/3"
    });

    // フィルターの条件を設定します
    usaLayer.definitionExpression = "state_name = 'California'"; // カリフォルニア州を表示

    map.add(usaLayer);
});

メタデータ

種類

製品