Поиск, фильтр, по JSON
Задача вывести на карту метки в соответствии с фильтрами или вывести все метки.
Есть input id="searcht"(смотри в json: properties.balloonContent), выводит метки если только ввести полное название(не работает если вводить с включенным CAPS LOCK).
Хотелось бы выводить метки вводя в input id="searcht" с 1й или 3х букв, еще избавиться от влияния регистра.
ymaps.ready(init);
function init() {
var myMap = new ymaps.Map('map', {
center: [55.76, 37.64],
zoom: 10,
controls: []
}, {
searchControlProvider: 'yandex#search'
}),
objectManager = new ymaps.ObjectManager({
// Чтобы метки начали кластеризоваться, выставляем опцию.
clusterize: true,
// ObjectManager принимает те же опции, что и кластеризатор.
gridSize: 64,
// Макет метки кластера pieChart.
clusterIconLayout: "default#pieChart"
});
myMap.geoObjects.add(objectManager);
//Состояние фильтров statusS -ввод input, statusF1 - фильтр select, resmap - для функции если 0 выводить все метки, если 1 в соответствии с фильтром, coffil - условие поиска для объединение фильтров .
var statusS=0, statusF1=0,resmap=0, coffil='';
function rFil() {
if (resmap > 0) {
objectManager.setFilter(coffil);
} else {
objectManager.setFilter('');
}
}
function check2() {
if (coffil == '') {
coffil = statusF1;
rFil();
} else if (coffil !='') {
coffil = coffil + statusF1;
rFil();
}
}
function check1() {
if ( statusS == 0 && statusF1 ==0 ){
resmap = 0;
coffil='';
rFil();
} else if (statusS !=0 && statusF1 ==0) {
resmap = 1;
coffil = statusS;
rFil();
} else if (statusS !=0 && statusF1 !=0 ) {
resmap = 1;
coffil = statusS + ' && ';
check2();
} else {
resmap = 1;
coffil='';
check2();
}
}
function ucFirst(str) {
if (!str) return str;
return str[0].toUpperCase() + str.slice(1);
}
$('#searcht').on('change paste keyup', function() {
if ($(this).val() == '') {
statusS = 0;
check1();
} else {
let s = this.value;
statusS = 'properties.balloonContent == "'+ucFirst(s)+'"';
check1();}
}
);
$( "#filter1" ).change(function() {
if ($(this).val() == 0) {
statusF1 = 0;
check1();
} else {
statusF1 = 'properties.fil2 == "'+$(this).val()+'"';
check1();
}
});
$.ajax({
url: "https://api.myjson.com/bins/rj0ik"
}).done(function(data) {
objectManager.add(data);
});
}