Поиск, фильтр, по 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);
    });
}

Ссылка


Ответы (0 шт):