2016-05-11 3 views
0

Я новичок в Mapbox GL JS и люблю его! Несколько вещей, которые я столкнуться при фильтрации маркеров на источнике GeoJSON, что я интересно, если кто-то может помочь мне с ... вот пример моего фильтра логики:Mapbox GL JS - Анализ отфильтрованных маркеров

function applyFilters() { 
     var filters = ["all", ["==", "$type", "Point"]]; 

     if (document.getElementById('filter1checkbox').checked) 
      filters.push(['==', 'property1', true]); 
     if (document.getElementById('filter2checkbox').checked) 
      filters.push(['==', 'property2', true]); 

     map.setFilter('markers', filters); 
     var llb = new mapboxgl.LngLatBounds(geojsonExtent(markers)); 
     map.fitBounds(llb); 
     map.setCenter(llb.getCenter()); 
    } 

А вот мои вопросы :

  1. Как только мой фильтр применяется, существует ли способ получить количество маркеров, которые соответствуют фильтру (в вашем поиске возвращены элементы {X})?
  2. Когда я использую geojsonExtent для получения границ коллекции маркеров, он, похоже, не учитывает фильтр. Есть ли способ получить данные за фильтром, чтобы перейти в geojsonExtent?

Любые советы о том, куда обращаться за эти товары?

ответ

0

Как только мой фильтр применяется, существует ли способ получить количество маркеров, которые соответствуют фильтру (в вашем поиске возвращены элементы {X})?

Вы можете получить число отфильтрованных маркеров видимых в данный момент в окне просмотра, запустив

map.queryRenderedFeatures({layers: ['markers']).length 

Там нет никакого способа, чтобы получить общее количество отфильтрованных маркеров через всю карту.

Когда я использую geojsonExtent для получения границ коллекции маркеров, он, похоже, не учитывает фильтр. Есть ли способ получить данные за фильтром, чтобы перейти в geojsonExtent?

Вы также можете использовать queryRenderedFeatures! (Примечание: этот код не проверен)

geojsonExtent({ 
    type: 'FeatureCollection', 
    features: map.queryRenderedFeatures({layers: ['markers']).length 
}); 
Смежные вопросы