Клуб API Карт

Не выпадает список подсказок SearchControl

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

 Реализую поиск по своим объектам, создал класс провайдера, переписал метод geocode - все работает, по нажатию на кнопку список выводится, по объектам прыгает и т.д.

Теперь новая задача - нужно вывести подсказки при вводе, добавил к тому же классу метод suggest, создал все нужные структуры и вернул Promise - подсказок нет.

 В отладчике все норм, структуры создаются и ничего не падает. Почему же не работает?


for (var i = 0, l = points.length; i < l; i++) {
var point = points[i];
var text = point["gosnomer"];
struct[i] = {};
struct[i].displayName = text;
struct[i].value = text;
}
var deferred = new ymaps.vow.defer();
deferred.resolve(struct);
return deferred.promise();

...
...

searchV = new ymaps.control.SearchControl({
options: {
noPlacemark: true,
provider: new CustomSearchProvider(vehicle_list),
placeholderContent: 'Номер автомобиля',
size: 'large',
position: { right: 48, top: 10 }
}
});
myMap.controls.add(searchV);
}

 

 

 

5 комментариев

defer это не класс, а фабричный метод

Возможно, но это ничего не меняет. Просто не понимаю я как работают эти "обещания". Почему нельзя обойтись обычными callback'ами? В документации сказано какие структуры должен создать и как их должен вернуть. Я это выполнил - почему не работает-то?

Обещания работают отлично. Если вы чего-то не понимаете это не значит что это плохо

можно увидеть ссылку на эту страницу

 

Я и не говорю что это плохо. Плохо когда создают что-то хорошее и недостаточно документируют.

Может хоть примером рабочим сможете помочь?

Ничего не могу найти по IGeocodeProvider.suggest, а именно как и в каком виде возвращать найденые значения. По IGeocodeProvider.geocode в песочнице пример есть, но suggest видать по другому работает.

 

 

 

 

 

в каком виде надо возвращать данные есть в документации

https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/ISearchProvider-docpage/

обещания также документированы

https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/vow-docpage/