哎哟!我头疼。几个小时以来一直在研究这个问题,我的大脑正在自行折叠。
基本上,Isotope在我的页面上隐藏或显示html元素,我需要以非常有效的方式在嵌入式地图上隐藏或显示相应的Google Maps标记(许多Google Maps标记)。
所以......我有一个MASTERARRAY [],里面装满了物品。数组中的每个对象都有一个唯一的id。
即。 MASTERARRAY [I] .ID
此MASTERARRY []还有一个Google Maps标记对象。
即。 MASTERARRAY [I] .marker
当Isotope在我页面上的页面上过滤HTML元素时,我将具有唯一ID的对象推送到以下阵列之一:
ISOTOPEFILTER.resultsRemovedFromPage
ISOTOPEFILTER.resultsOnPageAfterFiltering
通过将MASTERARRAY与ISOTOPEFILTER.resultsRemovedFromPage进行比较,下面的代码将成功删除地图上的标记。但是,我不知道如何有效地使用此功能还可以显示ISOTOPEFILTER.resultsOnPageAfterFiltering数组中存在ID的Google Map标记。
function updateMap() {
var hiddenMarkerCount = 0;
for (i in ISOTOPEFILTER.resultsRemovedFromPage) {
for (var j=0; j<MASTERARRAY.length; j++) {
if (ISOTOPEFILTER.resultsRemovedFromPage[i].id == MASTERARRAY[j].id){
hiddenMarkerCount++;
MASTERARRAY[j].marker.setMap(null);
break;
}
}
}
console.log("We have hidden"+hiddenMarkerCount+" markers");
}
答案 0 :(得分:0)
不是将已删除和包含的对象存储在数组中,而是将它们存储在从ID键入的对象中。然后你可以这样做:
for (var j = 0; j < MASTERARRAY.length; j++) {
if (ISOTOPEFILTER.resultsRemovedFromPage[MASTERARRAY[j].id]) {
// Do stuff for removed items
}
if (ISOTOPFILTER.resultsOnPageAfterFiltering[MASTERARRAY[j].id]) {
// Do stuff for included items
}
}