0
Завершен
Гранулярные подсказки с индексом
Добрый день!
Приведите пожалуйста пример с гранулярными подсказками с использованием почтового индекса. Этот пример видел http://codepen.io/dadata/pen/cGkah?editors=101 , интересует пример когда по индексу будут заполняться поля региона и города, с дальнейшим правильным автокомплитом по улице.
Спасибо.
Сервис поддержки клиентов работает на платформе UserEcho
Расскажите, пожалуйста, более подробно про ваш кейс. Что вы хотите получить как конечный результат?
Пользователь вводит в индекс цифры индекса, и у него выпадают подсказки с вариантами индекса, региона и города. Как только пользователь выбрал вариант из списка автоматически заполняются поля Регион и Город. Далее пользователь начинает вводить улицу в поле Улица и у него должны выпадать подсказки с учетом ранее выбранных региона и города.
Так же пользователь может не заполнять поле Индекс, а сначала заполнить Регион и Город из подсказок. В этом случае должен автоматически подставиться индекс.
Смотрите, тут есть такая проблема: в КЛАДР-е не проставлены индексы для многих городов и населенных пунктов. Например, для Москвы нет индекса. Соответственно, "вытащить" индекс можно только начиная с улицы.
Но и тут есть нюанс. Бывает так, что и у улицы нет индекса, пока не определен дом.
Например:
г Санкт-Петербург, ул 2-я Жерновская, д 46 - индекс 195030
г Санкт-Петербург, ул 2-я Жерновская, д 23 - индекс 195043
2 дома на одной и той же улице имеют разные индексы.
Поэтому можно сделать пример с поиском через улицы, но его надежность будет оставлять желать лучшего, он просто не будет находить некоторые улицы, вроде той, что в примере.
Пользователь вводит в индекс цифры индекса, и у него выпадают подсказки с вариантами индекса, региона и города. Как только пользователь выбрал вариант из списка автоматически заполняются поля Регион и Город. Далее пользователь начинает вводить улицу в поле Улица и у него должны выпадать подсказки с учетом ранее выбранных региона и города
По поводу подстановки индекса после выбора улицы - можно подставить один индекс, после выбора дома скорректировать на другой.
> Пользователь вводит в индекс цифры индекса, и у него выпадают подсказки с вариантами индекса, региона и города.
Определить индекс до выбора улицы в большинстве случаев нет возможности, т.к. поле индекса, которое берется из КЛАДР, обычно пустое для городов и населенных пунктов.
Возьмем, к примеру, Москву - для нее поле индекса в КЛАДР пустое. То есть автоматически заполнить поля Регион и Город на основании значения индекса не выйдет, потому что есть регион Москва и город Москва, но для них в КЛАДР не проставлен индекс, и значение индекса будет нулевое.
Непустой индекс начинает появляться в полях на уровне улиц, но, как понимаю, это не то, что вы хотите.
Видимо мы с вами друг друга не поняли. Хорошо, я более подробно распишу процесс.
>Возьмем, к примеру, Москву - для нее поле индекса в КЛАДР пустое. То есть автоматически заполнить поля Регион и Город на основании значения индекса не выйдет, потому что есть регион Москва и город Москва, но для них в КЛАДР не проставлен индекс, и значение индекса будет нулевое.
Давайте возьмем индекс 107140 который соответвует Московскому адресу. По вашим словам определить регион и город по индексу для Москвы невозможно. Но возьмите этот индекс и вставьте в свое демо поле подсказок на сайте. О чудо! Оно работает, хотя вы говорили что не должно. В подсказках выпали несколько разных адресов, отличающихся улицами, но они все московские. Так все таки можно сказать что это Москва если выкинуть из результата улицы и сгруппировать по городу?
Как я вижу техническую реализацию - при вводе индекса уходит запрос на подсказки в режиме выбора города. Соответственно пользователь видит подсказки - индекс, регион, город. При выборе варианта поля индекс, город и регион - заполняются автоматически. Далее пользователь переходит к заполнению улицы и подсказки улиц идут с учетом заполненных значений региона и города (как в обычных гранулярных подсказках).
Давайте попробуем на практике — http://codepen.io/anon/pen/zxGbZQ
Попробуйте ввести индекс "309" и вы увидите, о чем идет речь.
Допилил для своих нужд.