[英]How to apply filters together?
我在帶有下拉過濾器的谷歌地圖上有標記,這些過濾器單獨工作得很好。 但是,我希望過濾器一次考慮所有三個下拉列表。
這是我的代碼: https ://jsfiddle.net/h4cv57tb/
應該以某種方式合並 3 個過濾器功能,但不幸的是我不知道如何...
以下是應該合並的過濾器功能:
//Filter by type
filterMarkers = function(category) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
// If is same category or category not picked
if (marker.category == category || category.length === 0) {
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}
//FILTER by ripening time
filterMarkersEres = function(eres) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
var ereshonap = marker.eres;
// If is same category or category not picked
if (ereshonap.includes(parseInt(eres)) || eres.length === 0) { //
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}
//FILTER by place
filterMarkersHely_tipus = function(hely_tipus) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
// If is same category or category not picked
if (marker.hely_tipus == hely_tipus || hely_tipus.length === 0) {
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}
在此先感謝您的幫助!
確保查看有重復代碼的位置,並在可行的情況下簡單地組合不同的區域。 要將這些函數組合成一個函數,只需將 if 條件組合在一起即可。
filterMarkers = function(category = null, eres = null, hely_tipus = null) {
for (i = 0; i < gmarkers1.length; i++) {
marker = gmarkers1[i];
ereshonap = marker.eres;
visible = false;
if (category){
if (marker.category == category || category.length === 0) {
visible = true;
}
}
if (eres) {
if (ereshonap.includes(parseInt(eres)) || eres.length === 0) {
visible = true;
}
}
if (hely_tipus) {
if(marker.hely_tipus == hely_tipus) {
visible = true;
}
}
if (visible) {
marker.setVisible(true);
} else {
marker.setVisible(false);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.