Интеграция сервиса ФИАС для адресных подсказок в мобильном приложении
Пользователь вводит адрес вручную и допускает опечатку. Или вводит корректно, но в нестандартном формате. Бэкенд не принимает адрес, потому что ждёт структурированные данные с кодом КЛАДР или ФИАС. Именно здесь нужны адресные подсказки.
ФИАС и сервисы на его основе
ФИАС (Федеральная Информационная Адресная Система) — государственный реестр адресов России. Напрямую интегрироваться с ФИАС в мобильном приложении нецелесообразно: база весит десятки гигабайт, обновляется еженедельно, и прямого API для поиска нет.
На практике используют сервисы, которые индексируют ФИАС и предоставляют удобный 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 недели.







