Інтеграція сервісу адресних підказок ФІАС в мобільний додаток
Користувач вводить адресу вручну та робить друкарську помилку. Або вводить коректно, але в нестандартному форматі. Бекенд не приймає адресу, тому що чекає структуровані дані з кодом КЛАДР або ФІАС. Саме тут потрібні адресні підказки.
ФІАС та сервіси на його основі
ФІАС (Федеральна Інформаційна Адресна Система) — державний реєстр адрес Росії. Інтегруватися з ФІАС безпосередньо в мобільному додатку недоцільно: база важить десятки гігабайт, оновлюється щотижня, прямого API для пошуку немає.
На практиці використовуютьservices, які індексують ФІАС та надають зручний API пошуку:
DaData.ru — найпопулярніший варіант. API чистки та стандартизації адрес, підказки при вводі (Suggest API), геокодування. Стандартизація адреси повертає повну структуру: регіон, місто, вулиця, будинок з кодами ФІАС та КЛАДР, координати, поштовий індекс.
2GIS Geocoder — альтернатива з акцентом на комерційну нерухомість та організації.
Яндекс Геокодер — широко доступний, але менш точний щодо ФІАС-кодів, ніж DaData.
Реалізація з DaData Suggest API
POST https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address
Authorization: Token {api_key}
Content-Type: application/json
{
"query": "Москва Ленина",
"count": 5,
"locations": [{"country": "*"}]
}
Відповідь містить список підказок з полем data — повністю розібрана адреса з кодами ФІАС на кожному рівні (регіон, район, місто, вулиця, будинок).
Важливо: запит на підказки робимо не на кожен символ, а через debounce 300-400ms. На швидкому вводі без debounce отримуємо 10+ запитів в секунду — і швидко виснажуємо обмеження.
UX-паттерн для адресного поля
Стандартна реалізація: TextField з выпадаючим списком підказок. При виборі підказки заповнюємо допоміжні поля (індекс, місто, вулиця, будинок) — або передаємо весь об'єкт на сервер цілком.
Один нюанс: підказки DaData працюють ієрархічно. Якщо користувач вводить "Москва, вул. Ленина", спочатку він повинен вибрати місто, потім уточнити вулицю. Це зручніше, ніж одне поле для всієї адреси, але вимагає складнішого UX — кілька кроків або розумна автозміна.
Геокодування та відображення на карті
Після вибору адреси з підказок DaData повертає координати geo_lat / geo_lon. Якщо потрібно показати адресу на карті — координати вже є, додатковий запит до геокодера не потрібен.
На iOS рендеримо через MapKit з MKPointAnnotation, на Android — Google Maps SDK або Yandex MapKit (останній актуальний для російського ринку, оскільки Google Maps в РФ працює без шару організацій).
Офлайн-варіант
Для додатків з повноцінним офлайн-режимом (наприклад, курульєрський додаток поза зоною покриття) DaData не підходить — API вимагає інтернет. У цьому випадку вбудовуємо локальну базу ФІАС: SQLite з індексуванням за n-gram. База для регіону важить 50-200 МБ, для всієї Росії — кілька гігабайт. Реалістично тільки для обмеженої географії.
Терміни: інтеграція підказок через DaData з базовим UX — 3-5 днів. З ієрархічним вводом, відображенням на карті та валідацією — 1-2 тижні.







