Клуб API Карт

Поиск по собственным объектам загруженным с помощью ObjectManager`а

ытя
28 апреля 2016, 16:28

Добрый день, а есть ли у кого пример как реализовать поиск по собственным объектам, которые были загружены на карту с помощью ObjectManager?

Я пытался делать, взяв за основу данный пример: https://tech.yandex.ru/maps/jsbox/2.1/custom_search и даже получаю результат поиска, но не работает самаое главное, при выборе объекта из выпадающего списка я получаю ошибку в консоль "Uncaught TypeError: Cannot read property '1' of undefined" и больше ничего не происходит.

Собственно как я пытался сделать:

Создаю обжект менеджер:

objectManager = new ymaps.ObjectManager({
    clusterize: true,
    gridSize: 32,
    groupByCoordinates: true,
});
myMap.geoObjects.add(objectManager)

И загружаю в него данные (этот момент опустил)

Создаю экземляр класса ymaps.control.SearchControl:

var mySearchControl = new ymaps.control.SearchControl({
    options: {
        provider: new CustomSearchProvider(objectManager),
        noPlacemark: true,
        resultsPerPage: 5,
        size: 'large'
    }
});

И собственно сам провайдер:

function CustomSearchProvider(points)
{
    this.points = points;
}

CustomSearchProvider.prototype.geocode = function (request, options)
{
    var deferred = new ymaps.vow.defer(),
    geoObjects = new ymaps.GeoObjectCollection(),
    offset = options.skip || 0,
    limit = options.results || 20;

    var search_points = this.points.objects.getAll();

    var points = [];
    for (var i = 0, l = search_points.length; i < l; i++)
    {
        var point = search_points[i];

        if(point.properties.search_text.toLowerCase().indexOf(request.toLowerCase()) != -1)
        {
            points.push(point);
        }
    }

    points = points.splice(offset, limit);
    for (var i = 0, l = points.length; i < l; i++)
    {
        var point = points[i],
            coords = point.properties.coords;

        geoObjects.add(new ymaps.Placemark(coords,
        {
            name: point.properties.address,
            description: point.properties.text,
            boundedBy: [coords, coords]
        }));
    }

    deferred.resolve(
    {
        geoObjects: geoObjects,
        metaData: {
            geocoder: {
                request: request,
                found: geoObjects.getLength(),
                results: limit,
                skip: offset
            }
        }
    });
    return deferred.promise();
};

Помогите советом, что я делаю не так?

3 комментария
Подписаться на комментарии к посту
point.properties.coords?
dimik,
!!! да, действительно оно, почему то был уверен что координаты приходят....
dimik,
спасибо за помощь!