有没有办法通过点击 Leaflet 中的多边形来过滤 geojson?

Is there a way to filter geojson by clicking polygon in Leaflet?

我已经使用带 LayerGroup 的切换按钮实现了 geojson 过滤器,但想知道是否有人使用地图上的鼠标点击成功实现了相同的行为。

示例:世界各国地图。单击 Italy 多边形会导致只有 Italy 可见。单击意大利以外的区域以再次显示所有国家/地区。希望我的问题很清楚。

只需挂接到图层的单击事件、清除组并添加该图层即可。也挂在地图上单击,删除单层并恢复其余部分。这是一个简单的例子:

// vars to store stuff
var geojson, source, selected;

// Load the collection
$.getJSON(url, function (collection) {
    // Store collection for later use
    source = collection;
    // Create layer and add collection
    geojson = L.geoJson(collection, {
        // On each feature in collection
        'onEachFeature': function (feature, layer) {
            // Attach click handler
            layer.on('click', function () {
                // Set selected flag
                selected = true;
                // Clear the entire layer
                geojson.clearLayers();
                // Add the feature
                geojson.addData(feature);
                // Fit layer to map
                map.fitBounds(layer.getBounds());
            });
         }
    }).addTo(map);
});

// Attach to map click
map.on('click', function () {
    // Check if something's selected
    if (selected) {
        // Clear the entire layer
        geojson.clearLayers();
        // Restore the collection
        geojson.addData(source);
        // Fit map to collection
        map.fitBounds(geojson.getBounds());
    }
});

这是一个关于 Plunker 的工作示例:http://plnkr.co/edit/o5Q0p3?p=preview