0

哎哟! 我头疼。在这个问题上工作了几个小时,我的大脑正在自行折叠。

基本上,Isotope 在我的页面上隐藏或显示 html 元素,我需要以非常有效的方式隐藏或显示嵌入地图上的相应 Google Maps 标记(许多 Google Maps 标记)。

所以...我有一个 MASTERARRAY[] 充满了对象。数组中的每个对象都有一个唯一的 id。

即 MASTERARRAY[i].id

此 MASTERARRY[] 还具有关联的 Google 地图标记对象。

即 MASTERARRAY[i].marker

当 Isotope 在我的页面上过滤我的页面上的 HTML 元素时,我将具有唯一 id 的对象推送到以下数组之一:

  1. ISOTOPEFILTER.resultsRemovedFromPage

  2. ISOTOPEFILTER.resultsOnPageAfterFiltering

下面的代码将通过将 MASTERARRAY 与 ISOTOPEFILTER.resultsRemovedFromPage 进行比较,成功地从我的地图上移除标记。但是,我不知道如何有效地让这个函数也显示谷歌地图标记,他们的 ID 存在于 ISOTOPEFILTER.resultsOnPageAfterFiltering 数组中。

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");
}
4

1 回答 1

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
    }
}
于 2013-07-09T03:56:26.977 回答