Javascript jQuery/Mapbox多数据过滤器问题
我有一个内置Mapbox的地图,它以GeoJSON为基础。我试图通过两个标准过滤标记:类别(多个真/假属性)和年份。我希望这两个过滤器同时工作,而不是相互抵消,但在组合它们时,我遇到了麻烦 每个过滤器都独立工作-这是我今年所拥有的:Javascript jQuery/Mapbox多数据过滤器问题,javascript,jquery,leaflet,mapbox,Javascript,Jquery,Leaflet,Mapbox,我有一个内置Mapbox的地图,它以GeoJSON为基础。我试图通过两个标准过滤标记:类别(多个真/假属性)和年份。我希望这两个过滤器同时工作,而不是相互抵消,但在组合它们时,我遇到了麻烦 每个过滤器都独立工作-这是我今年所拥有的: $('.year a').on("click", function() { var year = $(this).data('filter'); $(this).addClass('active').siblings().removeClass('a
$('.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关联的部分
任何指向正确方向的指示都将不胜感激。谢谢 苏奥斯
您的问题可能是您以选择器为目标绑定单击事件的方式。正确的方法是:
$('.category a, .year a').on('click', function() { ... });
您没有提到问题,但我认为这可能是问题所在或其中之一。您当前正在将
年和日历设置为相同的值。尝试直接针对元素,而不是使用this
,以避免该问题
$('.category a, .year a').on("click", function() {
var category = $('.category a').data('filter');
var year = $('.year a').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;
});
谢谢,伊纳西奥-你说得对,我没有正确输入选择器。我已经纠正了这一点,两个过滤器的“全选”功能现在都可以使用了,但它仍然没有按类别或年份进行过滤,因此我认为我的代码还有其他问题。我还遗漏了什么吗?@suoz,你的代码没有错,除了选择器问题。不过,我认为你做错了。您应该从Mapbox示例中尝试这种方法:您的类别和年份设置为相同的内容!你有一个活生生的例子吗@马特帕里拉是对的,但很难确定这是否是问题所在。@BillMorris是的!就在这里:嗯,这个回报也没有像你预期的那样有效