Клуб API Карт

Поиск среди элементов карты

Пост в архиве.

Доброго времени суток!

На моей карте подгружаются объекты из БД. Теперь нужно сделать поиск среди этих объектов по имени. Я так понимаю, мне должен помочь метод filter(), но что то не получается его правильно прикрутить :( Как это нужно правильно сделать?

 var group=[];
   
   $.post('Handler.ashx', 'param=' + param.toString(), function(response)
            {
                data = eval(response);
               
                group[param] = new YMaps.GeoObjectCollection("default#");
               
                for (i in data) {
                    // Создание стиля для значка метки
                    var s = new YMaps.Style();
                    s.iconStyle = new YMaps.IconStyle();
                    s.iconStyle.href = data[i].Style;
                    s.iconStyle.size = new YMaps.Point(18, 18);
                    s.iconStyle.offset = new YMaps.Point(-9, -9);
                    s.balloonContentStyle = new YMaps.BalloonContentStyle(
                        new YMaps.Template("<div>$[description]</div>")
                    );

                    var point = new YMaps.GeoPoint(data[i].Longitude, data[i].Latitude);
                    var placemark = new YMaps.Placemark(point, {hasHint: 1, style: s});
                     placemark.name = data[i].Name;
     
                     //тут засовываем html
                     placemark.description = data[i].Html + "<br />";
     
                     group[param].add(placemark);
                }
                   
                map.addOverlay(group[param]);
       });

 Вот так вот будет совсем мракобесие:

 

YMaps.Events.observe(group[12], group[12].Events.Load,

function () {

  var obj = this.filter(function(obj){

      return obj.name = '';

  });

  obj[0].openBalloon();

});

6 комментариев
Пожалуйста, скройте код под врезку.
Илья Ярмак
28 января 2016, 06:28
извиняюсь :)
Ну в простейшем случае это выглядит примерно так:

var group = new YMaps.GeoObjecttCollection(),
      searchName = "Имя, которое ищем";

var result = group.filter(function (overlay) {
    return overlay.name == searchName; // Точное совпадение
});

Соответственно можно искать по части подстроки. Это уже зависит от ваши желаний)
Илья Ярмак
28 января 2016, 06:28
Спасибо!
В таком виде мне понятно, и прикрутить удалось.
А где можно подробнее почитать про поиск подстроки?
Илья Ярмак
28 января 2016, 06:28
)))
я то подумал, есть некие встроенные механизмы.
а регулярные выражения изучаю уже. спасибо :)