Добрый день, а есть ли у кого пример как реализовать поиск по собственным объектам, которые были загружены на карту с помощью 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();
};Помогите советом, что я делаю не так?