2

mapbox を使用して屋内プロジェクトに取り組んでおり、特定のプロパティで機能 (フロア) を表示/非表示にする方法を探していますlevel=x。mapboxjs の最初のバージョンでは、これを使用することができまし。GLバージョンでは、フィルターを使用してレイヤーを簡単に表示/非表示にできますが、レイヤーが既に定義されており(部屋、廊下、階段...)、床に依存していないため、これは私が目指しているものではありません:

{
  "id": "rooms",
  "filter": [
    "all", [
      "==",
      "type",
      "room"
    ], [
      "!in",
      "subtype",
      "stairs",
      "elevator"
      ]
  ],
  "source": "indoorSource",
  "source-layer": "indoor",
  ...
},
{
  "id": "handrails",
  "filter": [
    "==",
    "handrail",
    "yes"
  ],
  "source": "indoorSource",
  "source-layer": "indoor",
  ...
}

使用したい機能を照会できます。

map.querySourceFeatures("indoorSource", {sourceLayer: "indoor", filter: ["==", "level", "2"]})

しかし、返された機能を表示/非表示にする方法が見つかりませんでした。

情報: IndoorSource は Web サーバーからのベクター タイルです。

"indoorSource": {
    "type": "vector",
    "tiles": ["http://xxx.xxx/tiles/{z}/{x}/{y}.pbf"]
}

前もって感謝します、

ティボー

4

2 に答える 2

2

Map#setFilterは と同じようにフィルターを取り、Map#querySourceFeaturesそれらを使用してマップ上のフィーチャを表示/非表示にします。

map.addLayer({
  'id': 'indoor',
  'source': 'indoor',
  'source-layer': ...
  ...
});

map.setFilter('indoor', ['==', 'level', '2']);
于 2016-04-12T22:09:11.090 に答える
0

屋内フロアを表示するための mapbox に基づいた、indoorequal フロントエンドをご覧ください。

于 2020-04-18T17:54:08.273 に答える