0
Answered

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

Danil 3 years ago updated by Антон 2 years ago 14

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

Answer

Answer

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


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

Answered

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


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



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



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

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

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

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

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

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

Answer

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


В 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 Почты России и транспортной компании (как минимум Деловых Линий). 

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

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

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

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



Понял, спасибо!