mapbox, настройка неэксклюзивной фильтрации маркеров для нескольких свойств

Следуя приведенному здесь примеру неэксклюзивных маркеров, https://www.mapbox.com/mapbox.js/example/v1.0.0/non-exclusive-markers/, довольно легко фильтровать по одному свойству за раз.

Мне нужно написать некоторый JS, который может принимать ряд свойств функций и отображать или скрывать каждый маркер в зависимости от того, соответствует ли какое-либо из этих свойств заданному значению флажка. Может ли кто-нибудь указать мне в направлении метода, который мог бы выполнить это?

Посмотрите демо, http://picturethiswebcenter.com/ods_map/.

Мой код фильтра,

//filter locations by category
var filters = document.getElementById('filters');
var cats = document.getElementsByClassName('filter');
var states = document.getElementsByClassName('filter2');

function change() { 
    // Find all checkboxes that are checked and build a list of their values
    var cats_on = [];
    for (var i = 0; i < cats.length; i++) {
        if (cats[i].checked) cats_on.push(cats[i].value);
    }

    var states_on = [];
    for (var i = 0; i < states.length; i++) {
        if (states[i].checked) states_on.push(states[i].value);
    }

    // The filter function takes a GeoJSON feature object
    // and returns true to show it or false to hide it.
    map.markerLayer.setFilter(function (f) {
        // check each property to see if its value is in the list
        // of categories that should be on, stored in the 'on' array
        return cats_on.indexOf(f.properties['category']) !== -1;
        return states_on.indexOf(f.properties['state']) !== -1;
    });

    return false;

}

// When the form is touched, re-filter markers
filters.onchange = change;
// Initially filter the markers
change;

person elliot.berg.ct    schedule 04.04.2014    source источник


Ответы (1)


Некоторые настройки JavaScript:

return cats_on.indexOf(f.properties['category']) !== -1 ||
 states_on.indexOf(f.properties['state']) !== -1;

В JavaScript || означает «или».

change();

Чтобы вызвать функцию, вам нужно использовать ().

person tmcw    schedule 08.04.2014