0

痛い!頭が痛い。この問題に何時間も取り組んできましたが、私の脳は自分自身に折りたたまれています.

基本的に、Isotope は自分のページで html 要素を非表示または表示しています。埋め込みマップ上の対応する Google マップ マーカーを非常に効率的な方法で非表示または表示する必要があります (多数の Google マップ マーカー)。

だから... オブジェクトでいっぱいの MASTERARRAY[] があります。配列内の各オブジェクトには一意の ID があります。

つまり、MASTERARRAY[i].id

この MASTERARRY[] には、Google マップのマーカー オブジェクトも関連付けられています。

つまり、MASTERARRAY[i].marker

Isotope が自分のページの HTML 要素をフィルタリングするとき、一意の ID を持つオブジェクトを次の配列のいずれかにプッシュします。

  1. ISOTOPEFILTER.resultsRemovedFromPage

  2. ISOTOPEFILTER.resultsOnPageAfterFiltering

以下のコードは、MASTERARRAY を ISOTOPEFILTER.resultsRemovedFromPage と比較することにより、マップからマーカーを正常に削除します。ただし、この機能を効率的に使用して、ISOTOPEFILTER.resultsOnPageAfterFiltering配列に存在するIDのGoogleマップマーカーも表示する方法がわかりません。

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 に答える