Поисковые подсказки по своим данным яндекс карты api

в данном примере показано как сделать поиск по своим объектам на самой яндекс карте. Проблема в том, что при вводе текста не отображается выпадающая панель с найденными обьектами.

Вопрос. Как добавить возможность отображения выпадающей панели через поиск по своим обьектам имено на яндекс карте.


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

Автор решения: Evgeny

Выпадающая панель не отображается, потому что в примере у всех объектов уникальные названия — если вписать всё слово целиком, то будет сразу найден единственный релевантный вариант. А если напишите в поиске, например, одну только букву "Б" — получите выпадающую панель ;-)

Помимо панели с результатами поиска (которая появляется после нажатия Enter), существует панель поисковых подсказок, для которой также можно назначить кастомный провайдер. Пример тут.

→ Ссылка
Автор решения: Andrey Chesnakov

Для того, чтобы отображались подсказки, в провайдере необходимо реализовать функцию .suggest()

В упомянутом примере это можно сделать так:

CustomSearchProvider.prototype.suggest = function (request, options) {
    // Количество возвращаемых результатов.
    var limit = options.results || 5;
        
    var points = [];
    // Ищем в свойстве text каждого элемента массива.
    for (var i = 0, l = this.points.length; i < l; i++) {
        if (this.points[i].text.toLowerCase().indexOf(request.toLowerCase()) != -1) {
            var point = {
                displayName: this.points[i].text, 
                value: this.points[i].text
            };
            points.push(point);
            if (points.length >=limit) break;
        }
    }

    return ymaps.vow.resolve(points);
};
→ Ссылка