Клуб 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();
};

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

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