MapBox-जीएल-js के साथ एक फिल्टर का उपयोग कर सुविधाओं दिखाएँ / छुपाएँ

वोट
2

मैं MapBox का उपयोग कर एक इनडोर परियोजना पर काम कर रहा हूँ और मैं एक तरह से एक विशिष्ट प्रॉपर्टी के साथ / छिपाएँ सुविधाओं (फर्श) को दिखाने के लिए की तलाश में हूँ level=x। Mapboxjs के पहले संस्करण में इसका इस्तेमाल करने के लिए संभव था इस । अब जीएल संस्करण में मैं आसानी से कर सकते हैं दिखाने / एक फिल्टर का उपयोग कर एक परत को छिपाने लेकिन यह क्या मैं क्योंकि परतों पहले ही निर्धारित कर (कमरे, गलियारों, सीढ़ियों ...) लक्ष्य कर रहा हूँ और फर्श पर निर्भर नहीं हैं नहीं है:

{
  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]
}

अग्रिम में धन्यवाद,

Thibaud

12/04/2016 को 20:33
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

Map#setFilterजैसे फिल्टर लेता है, Map#querySourceFeaturesऔर नक्शे पर / छिपाने सुविधाओं को दिखाने के लिए उन्हें का उपयोग करता है।

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

map.setFilter('indoor', ['==', 'level', '2']);
12/04/2016 को 21:09
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more