Добрый день.
Пытаюсь реализовать фильтрацию меток на карте. Пример метки:
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [56.75597027307506,60.62604950000001]
},
options: {
preset: 'islands#lightBlueDotIcon',
st_nal: 'zakaz',
shkn_nal: 'net'
}
Сортировка чекбоксами по двум параметрам st_nal и shkn_nal.
У меток могут эти параметры, как совпадать, так и быть различными.
Пользуясь примерами, получил такой код:
myGeoObject = new ymaps.GeoObject({
});
function checkState () {
var shownObjects,
bySt = new ymaps.GeoQueryResult(),
byShkn = new ymaps.GeoQueryResult();
if ($('#st_net').prop('checked')) {
bySt = myObjects.search('options.st_nal = "net"');
}
if ($('#st_est').prop('checked')) {
bySt = myObjects.search('options.st_nal = "est"')
.add(bySt);
}
if ($('#st_zakaz').prop('checked')) {
bySt = myObjects.search('options.st_nal = "zakaz"')
.add(bySt);
}
if ($('#shkn_net').prop('checked')) {
byShkn = myObjects.search('options.shkn_nal = "net"');
}
if ($('#shkn_est').prop('checked')) {
byShkn = myObjects.search('options.shkn_nal = "est"')
.add(byShkn);
}
if ($('#shkn_zakaz').prop('checked')) {
byShkn = myObjects.search('options.shkn_nal = "zakaz"')
.add(byShkn);
}
shownObjects = bySt.intersect(byShkn).addToMap(myMap);
myObjects.remove(shownObjects).removeFromMap(myMap);
}
$('#st_net').click(checkState);
$('#st_est').click(checkState);
$('#st_zakaz').click(checkState);
$('#shkn_net').click(checkState);
$('#shkn_est').click(checkState);
$('#shkn_zakaz').click(checkState);
Но здесь оба параметра объединяются, т.е. показываются метки только те, которые подходят под оба параметра.
Вопрос: как разделить это? Поставил первый чекбокс - на карте показались метки, удовлетворяющие фильтру, поставил другой - удовлетворяющие ему и т.д.
З.Ы. в программировании не слишком силен, извините)