我有一个用Mapbox构建的地图,它以GeoJSON为基础。我尝试按两个标准过滤标记:类别(多个真/假属性)和年份。我希望这两个过滤器同时工作,而不是互相取消,但我在组合时会卡住。
每个过滤器都独立工作 - 这就是我今年所拥有的:
$('.year a').on("click", function() {
var year = $(this).data('filter');
$(this).addClass('active').siblings().removeClass('active');
featureLayer.setFilter(function(f) {
return (year === 'all' || f.properties.Year === year);
});
return false;
});
这就是我对类别的看法:
$('.category a').on("click", function() {
var category = $(this).data('filter');
$(this).addClass('active').siblings().removeClass('active');
featureLayer.setFilter(function(f) {
return ((category === 'all') ? true : f.properties[category] === true);
});
return false;
});
这就是我将它们结合起来的方式,但我知道我做错了什么。
$('.category a, .year a').on("click", function() {
var category = $(this).data('filter');
var year = $(this).data('filter');
$(this).addClass('active').siblings().removeClass('active');
featureLayer.setFilter(function(f) {
return ((category === 'all') ? true : f.properties[category] === true) &&
(year === 'all' || f.properties.Year === year);
});
return false;
});
我想我错过了区分两个过滤器搜索的步骤,但我对jQuery不太熟悉,所以我不确定我需要做什么。具体来说,我认为我错过了类别var与.category a相关联的部分,而年份var与.year a相关联。
任何指向正确方向的人都会非常感激。谢谢!
答案 0 :(得分:2)
suoz,
您的问题可能是您将选择器定位为绑定click事件的方式。正确的方法是:
$('.category a, .year a').on('click', function() { ... });
你没有说过这个问题,但我认为这可能是问题或其中之一。
答案 1 :(得分:1)
您目前正在将php-mbstring
和year
设置为相同的值。尝试直接定位元素,而不是使用calendar
来避免这个问题。
this