0
Отвечен

Нет почтового индекса

Danil 7 лет назад обновлен Михаил 3 года назад 15

Подскажите, почему почтовый индекс возвращается не для каждой подсказки?
Даже с count = 1 почтовый индекс не всегда возвращается. Например если искать "г Москва". В ответе нет индекса. Зато есть геокоординаты, кладр, фиас. При этом если искать "Санкт-Петербург" - то индекс есть. В чем причина?

Ответ

Ответ

Подсказки возвращают индекс только после того, как человек выбрал конкретный адрес из списка.


В API это запрос с параметром count = 1.

Отвечен

Подсказки используют справочник адресов налоговой службы (ФИАС). В нем самая полная и актуальная информация по российским адресам.


К сожалению, по некоторым адресам в справочнике нет индексов, как например для г. Москвы:



А для Санкт-Петербурга есть:



Индексы в ФИАСе могут не совпадать с индексами Почты России:

Почему индекс неправильный — не такой, как у Почты России?

Мы работаем над объединенной базой индексов ФИАС и Почты России. Она компенсирует ошибки ведомств и заполнит индексы для городов. Планируем выпустить в декабре.

Сделали! Теперь Дадата возвращает индекс главпочтамта для населенного пункта, если в адресе нет улицы и дома.

Класс! Спасибо, буду проверять! =) Прям новый год )))

При использовании геолокации для населенного пункта (проверено на Киров, Кировская область) не возвращается индекс, хотя если город потом выбрать из списка, то индекс появляется. Возможно ли исправить?

Ответ

Подсказки возвращают индекс только после того, как человек выбрал конкретный адрес из списка.


В API это запрос с параметром count = 1.

Добавление count: 1 в пример https://codepen.io/dadata/pen/qxDor?editors=1012 не помогает.


$address.suggestions({
  token: "5ef98f5781a106962077fb18109095f9f11ebac1",
  type: "ADDRESS",
  onSelect: detectPostalCode,
  count: 1
})

;

Результат всё так же без индекса.

Михаил, тут вышла какая-то путаница. В данном примере count = 1 не нужен. Как вы проверяли, что индекс не определяется?

В приведенном выше примере возвращаемый методом getGeoLocation объект locationData содержит переменную postal_code со значением null. Это видно по логам в консоли.

Совершенно верно. И в том же примере есть метод detectPostalCode, который вызывается по нажатию на кнопку «Определить индекс». Он и возвращает индекс.

Поясню.

В нашем проекте индекс нужен для определения стоимости доставки. 

Адрес покупателя определяется с помощью вашего сервиса геолокации, но в ответе нет индекса и приходится делать дополнительный запрос.

Возможно ли получить индекс сразу?

Сразу — нет, только отдельным запросом. Но мы как раз собираем пожелания на этот счёт. А как вы используете индекс для определения стоимости доставки? И что, если геолокация сработала неправильно или пользователь при оформлении заказа укажет адрес в другом городе?

Индекс используется для расчётов доставки через API Почты России и транспортной компании (как минимум Деловых Линий). 

У почты, как правило, стоимость доставки до главпочтамта и до адреса не отличается. 

А у Деловых линий в расчётах уже присутствует стоимость доставки по городу курьером.

Пользователь, попадая на страницу оформления заказа, сразу видит минимальную стоимость доставки для населенного пункта, определенного геолокацией.

Если город определен неверно, то пользователь может ввести другой и стоимость будет автоматически пересчитана.



И снова здравствуйте!

В примере "Определить индекс для города" не определяется индекс для Тюмени.

Почему и как определить в таком случае индекс?

Сервис поддержки клиентов работает на платформе UserEcho