javascript - 如何向 Mapbox 传单 map 添加多个过滤器

标签 javascript dictionary filter leaflet mapbox

我有一个可用的 map 框/传单 map ,我可以根据下拉列表进行过滤,但只有其中一个可以工作,不确定组合过滤器的语法(或者是否可能)?

我基本上有一个用 json 数据填充的房地产 map ,其中包括特性类型和社区。需要组合可能的过滤器,因此选择不同的属性类型不会删除邻域过滤器。

$('#propertytype').change(function() {
    if ($(this).val() === 'all') {
        console.log($(this).val());
        markers.setFilter(function(f) {
            return f.properties['type'] != null;
        });
    } else {
        console.log($(this).val());
        var ptype = $(this).val();
        markers.setFilter(function(f) {
            return f.properties['type'] === ptype;
        });
        return false;
    }
});

$('#neighborhood').change(function() {
    if ($(this).val() === 'all') {
        console.log($(this).val());
        markers.setFilter(function(f) {
            return f.properties['neighborhood'] != null;
        });
    } else {
        console.log($(this).val());
        var hood = $(this).val();
        markers.setFilter(function(f) {
            return f.properties['neighborhood'] === hood;
        });
        return false;
    }
});

最佳答案

当然,简化为一个函数:

$('#propertytype, #neighborhood').change(function() {
    var propertyType = $('#propertytype').val();
    var neighborhood = $('#neighborhood').val();
    markers.setFilter(function(f) {
        return (propertyType === 'all' || f.properties.type == propertyType) &&
            (neighborhood === 'all' || f.properties.neighborhood === neighborhood);
    });
    return false;
});

(尚未执行此代码,但应该可以工作)

关于javascript - 如何向 Mapbox 传单 map 添加多个过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26637998/

相关文章:

python - 从 Python 字典中的 key 中删除元素

dictionary - 我应该在范围之前锁定 map 吗?

javascript - 使用选择选项值进行过滤

javascript - 如何从 XPathResult 中的元素访问属性和文本值?

C#:在键是对象的地方使用 ContainsKey

c++ - OpenCV 中的同态滤波

arrays - 如何在 iOS Swift 中的嵌套数组(对多关系)中根据条件过滤对象数组

Javascript:打乱数组中的对象组

javascript - 事件循环和同步阻塞

javascript .filter() 真 boolean 值