#javascript #web #bing-maps #bing #autosuggest
#javascript #веб #bing-maps #bing #автоматическое предложение
Вопрос:
Краткое описание:
У меня есть вопрос о модуле автоматического предложения API управления картами JavaScript. Я вижу в примере ( https://www.bing.com/api/maps/sdk/mapcontrol/isdk/autosuggestui#JS ) что в раскрывающемся списке автосуггест по умолчанию не выбирается первое предложение. Вместо этого пользователь должен навести курсор мыши и щелкнуть предложение или стрелку вниз, чтобы выбрать его, а затем нажать ввод. Я пытаюсь автоматически выбрать первый элемент в выпадающем списке, чтобы пользователю нужно было ввести только начальную часть своего адреса, а затем нажать enter, как только они увидят, что появилось автоматическое предложение.
Полное объяснение:
В кодовой базе, в которой я работаю, уже есть обходное решение для этого, где оно обрабатывает событие нажатия клавиши, а затем использует функцию getSuggestions() ( https://learn.microsoft.com/en-us/bingmaps/v8-web-control/modules/autosuggest-module/autosuggestmanager-class ). Однако у этого есть некоторые недостатки:
-
Первый элемент в отображаемых автозаполнениях не выделен, поэтому нет визуальной индикации для пользователя, что нажатие ENTER выберет этот первый элемент.
-
Поскольку функция getSuggestions() вызывается вне диапазона поля ввода и контейнера предложений, трудно быть уверенным, что первый элемент в отображаемых автозаполнениях будет выбран с помощью getSuggestions (), и было бы трудно узнать, перестало ли это в конечном итоге работать (например, из-за какого-либо обновления).
-
Обратный вызов для функции getSuggestions() возвращает SuggestionResult[] , и в них нет определенных географических координат, тогда как обратный вызов для attachAutosuggest имеет геокоординаты. Это преодолимо с помощью вызова REST api для bing maps для получения координат, но это значительно усложняет ситуацию.
-
Код для этого должен быть немного сложным, потому что в случае, если событие нажатия клавиши ENTER уже было обработано обработчиками событий Bing Maps (потому что пользователь сделал стрелку вниз, а затем нажал enter), нам тогда не нужно повторно обрабатывать событие самостоятельно. Код для этого хрупкий.
Ответ №1:
Решение здесь заключается в использовании пользовательских компонентов пользовательского интерфейса для создания выпадающего меню, а затем использовать REST API Bing Maps для заполнения данных. Это требует хорошей работы, чтобы все было правильно, но после завершения у вас будет полный контроль над тем, как интерфейс был представлен пользователям.