2014-10-29 110 views
0

我有一個工作mapbox /傳單地圖,我可以根據下拉列表進行過濾,但只有其中一個可以工作,不確定語法(或者如果可能)組合過濾器?如何將多個過濾器添加到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

當然,簡化成一個功能:

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

(尚未執行該代碼,但應工作)

+0

完美!這是我想要做的,但不知道它是如何在JavaScript中完成的。謝謝! – nrutas 2014-10-30 20:12:11

相關問題