0

Mapbox GL JS は初めてですが、とても気に入っています! 誰かが私を助けてくれるかどうか疑問に思っているGeoJsonソースのマーカーをフィルタリングするときに私が遭遇したいくつかのこと...これが私のフィルターロジックのサンプルです:

    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 に渡す方法はありますか?

これらのアイテムのどこに行くべきかアドバイスはありますか?

4

1 に答える 1

0

フィルターが適用されたら、フィルターに一致したマーカーの数を取得する方法はありますか (検索で {X} 個のアイテムが返されました)。

実行すると、ビューポートに現在表示されているフィルター処理されたマーカーの数を取得できます。

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

マップ全体でフィルタリングされたマーカーの総数を取得する方法はありません。

geojsonExtent を使用してマーカー コレクションの境界を取得すると、フィルターが考慮されていないようです。フィルターの背後にあるデータを取得して geojsonExtent に渡す方法はありますか?

これにも使えますqueryRenderedFeatures!(注: このコードはテストされていません)

geojsonExtent({
  type: 'FeatureCollection',
  features: map.queryRenderedFeatures({layers: ['markers']).length
});
于 2016-05-11T22:14:16.443 に答える