2
私は屋内のプロジェクトでmapboxを使用していますが、特定のプロパティlevel=x
で機能(フロア)を表示/非表示する方法を探しています。 mapboxjsの最初のバージョンでは、thisを使用することができました。今、私がすることができます簡単にshow/hide a layer using a filter GLバージョンではなく、層はすでに(お部屋、廊下、階段を...)定義されており、床に依存しないされているので、これは私が目指してるものではありません。mapbox-gl-jsでフィルターを使用して機能を表示/非表示にする
{
"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は、ウェブサーバからのベクトルタイルです:事前に
"indoorSource": {
"type": "vector",
"tiles": ["http://xxx.xxx/tiles/{z}/{x}/{y}.pbf"]
}
おかげで、
ティボー
実際、Map#setFilterはスタイルレイヤのフィルタを更新し、以前のフィルタを削除します。回避策としては、 'map.setFilter(" rooms "、[" all "、map.getFilter(" rooms ")、[" == "、" level "、" 1 "]]);ですが、この解決策は汚いと維持するのは難しい。さらに、このソリューションでは、タグ「レベル」を使用するすべてのレイヤーを知る必要があります(また、ハードコードする必要があります)。私が使っているスタイルの詳細については、最初の投稿を更新しました。 –
この時点で、Mapbox APIについて理解しています。きれいで保守しやすいアーキテクチャを実装するのはあなた次第です。 –