如何向mapbox传单映射添加多个过滤器

时间:2014-10-29 18:27:07

标签: javascript map filter leaflet mapbox

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

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

$('#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;
    }
});

1 个答案:

答案 0 :(得分:1)

当然,简化为一个功能:

$('#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;
});

(没有执行此代码,但应该有效)