如何使用Leaflet中的切换按钮过滤geojson?

时间:2015-02-23 19:20:11

标签: javascript leaflet

加载geojson多边形后,我想实现一个切换菜单来按值过滤。我假设实现是similar to this cartodb map which uses SQL statements.

I image我可以使用图层选择器并从菜单中传递变量,例如第1区。

我的代码只是引入并设置了一个15个多边形的图层。我想保留这个,但添加一个过滤器。如何在传单中完成?非常感谢的例子。

   L.mapbox.accessToken = 'pk.eyJ1Ijoic2tvcmFzYXVydXMiLCJhIjoiaEdGTUZWTSJ9.osOC8tWU3bMaNprVNoEu7g';

    var lamap = L.mapbox.map('mapid', 'skorasaurus.5eb85050')
        .setView([34.000880, -118.04036], 10);

    var featLayer = L.mapbox.featureLayer().addTo(lamap);

    featLayer.loadURL('citycouncils.geojson');

    function getMyColor(myargument) {
        if (myargument === '1') {
            return '#996767'
        };
        if (myargument === '2') {
            return '#679967'
        };
        if (myargument === '10') {
            return '#672799'
        };
        if (myargument === '14') {
            return '#670099'
        };
        if (myargument === '15') {
            return '#699799'
        };
    }

    // styles each polygon based on its properties in the geojson file, using leaflet's setStyle
    featLayer.on('ready', function() {
        featLayer.eachLayer(function(polygon) {
            polygon.bindPopup('District ' + polygon.feature.properties.DISTRICT);
            console.log(typeof setStyle);
            polygon.setStyle({
                opacity: 0.55,
                  weight: 2,
                    opacity: 1,
                fillOpacity: 0.55,
                fillColor: getMyColor(polygon.feature.properties.DISTRICT),
                color: 'white'
            });
        });
    });

1 个答案:

答案 0 :(得分:1)

正如documented过滤L.mapbox.FeatureLayer非常简单。只需使用图层的setFilter方法设置过滤方法即可。

L.mapbox.FeatureLayer' setFilter方法的参考: https://www.mapbox.com/mapbox.js/api/v2.1.5/l-mapbox-featurelayer/#section-featurelayer-setfilter

完整的工作示例就在Mapbox网站上: https://www.mapbox.com/mapbox.js/example/v1.0.0/multiple-marker-filters/