2016-05-11 15 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. フィルタが適用されたら、フィルタに一致するマーカーの数を取得する方法がありますか?
  2. geojsonExtentを使用してマーカーコレクションの境界を取得すると、フィルタを考慮していないように見えます。 geojsonExtentにフィルタの後ろのデータを渡す方法はありますか?

これらのアイテムの入手先についてアドバイスをいただけますか?

答えて

0

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

あなたは

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

を実行することにより、フィルタのマーカー現在可視ビューポート内の数を取得することができますが、マップ全体にわたるフィルターのマーカーの合計数を取得する方法はありません。

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

これにもqueryRenderedFeaturesを使用できます。 (注:このコードはテストされていません)

geojsonExtent({ 
    type: 'FeatureCollection', 
    features: map.queryRenderedFeatures({layers: ['markers']).length 
}); 
関連する問題