2016-10-31 8 views
1

私は年にフィルタリングしたいリーフレットにgeojsonレイヤーを持っています。このgeojson層は、pointToLayerを使用してgeojsonファイルから作成されました。リーフレット内のgeojsonレイヤーをフィルタリングすると機能しない

問題は、このgeoJsonLayerが配列であるかどうかわかりません。私はそれがデータ構造であることをとても混乱しています。したがって、それをどのようにフィルタリングするのでしょうか。私はそれをにconsole.logすると、データがそうのようにネストされている:

オブジェクト{オプション:オブジェクト、_layers:オブジェクト、_leaflet_id:259、_initHooksCalled:真、_MAP:オブジェクト}

クリックし_layersに、私は」オブジェクトのリストを取得することができます(これは現在私の地図上に表示されている点です)。

info_city:ミルウォーキー

info_count私はオブジェクトのいずれかをクリックすると、私は属性のリストを持って「プロパティ」と呼ばれる性質を持っている「機能」と呼ばれるプロパティを、アクセスすることができますよ:1

info_date:2002

"info_date" と呼ばれるこのプロパティは、私がすることによってフィルタリングするフィールドです。

私は失敗した「geoJsonLayers.residents.features.properties

を使用してgeoJsonLayers.residentsからプロパティをCONSOLE.LOGしようとした私が使用してフィルタリングを試みた:

function filterByYear(data, year) { 
    f = data.filter(function(d) { 
    return d.properties.info_date == year; 
    }); 
    return f; 
} 


filterByYear(geoJsonLayers.residents, 2009); 

問題があります上記のメソッドは配列に対して機能すると思いますが、geojsonファイルをgeoJsonLayerに変換すると、データが何とか標準配列にならないようです。私は両方のオプションを試しました。私はすべてを試みてきたようにすべてのヘルプは、スーパーいただければ幸い

var points = L.geoJson(geoJsonLayers.residents, { 
      filter: function(feature, layer) { 
       console.log(geoJsonLayers.residents) 
       console.log(points) 
       return feature.properties.info_date === 2010; 
      } 
     }); 

は、私はまたの線に沿って何かをしようとしました!前もって感謝します。

+0

filterは配列メソッドで、取得しているものはobjectです。 –

+0

なので、どうすればいいですか?ありがとう。 – DiamondJoe12

答えて

1

この

var arr = [];//this array to hold your filterred object 
geoJsonLayers.eachLayer(function(layer){ 
if(layer.feature.properties.info_date === 2010){ 
arr.push(layer) 
} 
}) 
1

ような何かをしようとL.geoJSON工場はリーフレット層群オブジェクトを構築します。間違いなく通常のArrayではありません。

そのグループの子レイヤーの配列を取得する場合は、points.getLayers()を使用できます。また、Aksav padwalの答えに示すように、points.eachLayer(cb)を使用して、各子レイヤーに直接コールバック関数を適用したり、コールバック関数を適用することもできます。

気付いたように、L.geoJSON工場では、GeoJSONデータが各子レイヤーのfeatureメンバーに自動的に追加されました。

子レイヤをフィルタリングしてマップ上に表示できないようにするには、L.geoJSONファクトリがGeoJSONデータを解析している間に、必要に応じてレイヤグループを作成する必要があります。それらのレイヤーグループにマップを追加/削除できます。

参照:leaflet map, getting specific data of geojson file with button

注のみインスタンス化や時にデータを追加することで機能しますfilterL.geoJSONオプションという。

関連する問題