2016-12-06 67 views
-1

嗨我設法得到這個工作,所以標記加載並有多個類別分配給每個。谷歌地圖API3 - 過濾器(每個標記的多個選項)

過濾器的工作方式是匹配複選框和標記的值,如果不相等,則標記的可見性設置爲無。

我的問題是複選框沒有考慮到其他複選框,我現在卡住了。

任何指導的幫助,非常感謝!

+1

請張貼[最小,完全,可覈查示例](http://stackoverflow.com/help/mcve)。 –

+0

對不起,請在這裏找到:https://jsfiddle.net/emux5evL/2/ – Codetopixels

回答

1

無論選中或取消選中哪個複選框,您都需要迭代所有標記。您需要使用下面給出的代碼。它檢查每個標記的類別,並且只有在沒有選中適用於該標記的類別時纔將其可見性設置爲false。

/** 
* Function to filter markers by category 
*/ 

$(".marker_filter").click(function() { 

     for (i = 0; i < gmarkers1.length; i++) { 
     marker = gmarkers1[i]; 
     var setVisible = false; 
     for (j = 0; j < marker.category.length; j++) { 
      setVisible = $("#" + marker.category[j]).is(":checked") || setVisible 
     } 

     marker.setVisible(setVisible); 
     } 
    }); 

您需要爲複選框設置一個ID,並使其在HTML文件中默認選中。

<input type="checkbox" class="marker_filter" name="Option 1" value="option1" id="option1" checked/> 
<input type="checkbox" class="marker_filter" name="Option 2" value="option2" id="option2" checked/> 
<input type="checkbox" class="marker_filter" name="Option 3" value="option3" id="option3" checked/> 

更新的代碼可在https://jsfiddle.net/emux5evL/5/

+0

這是完美的,謝謝你的幫助! – Codetopixels