2GIS Suggest API Integration
Источник:
backend/app/api/v1/endpoints/location.py
Общие сведения
| Параметр | Значение |
|---|---|
| API | 2GIS Suggest API v3.0 |
| Base URL | https://catalog.api.2gis.com/3.0/suggests |
| Метод | Server-side proxy (Backend -> 2GIS -> Frontend) |
| API Key | settings.TWOGIS_API_KEY (env) |
| HTTP Client | httpx.AsyncClient |
| Регион | Казахстан (country_id=4) |
Endpoints
GET /api/v1/location/cities
Автокомплит городов Казахстана.
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
q |
string | Поисковый запрос (название города) |
Запрос к 2GIS:
GET https://catalog.api.2gis.com/3.0/suggests
?key={API_KEY}
&q={q}
&type=adm_div.city
&fields=items.point
&locale=ru_KZ
&country_id=4
Фильтрация: type=adm_div.city - только города (не районы, не улицы).
Ответ (mapped):
[
{
"name": "Алматы",
"full_name": "Алматы, Казахстан",
"point": { "lat": 43.238, "lon": 76.945 }
}
]
GET /api/v1/location/addresses
Автокомплит адресов с привязкой к точке (городу).
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
q |
string | Поисковый запрос (адрес) |
lat |
float | Широта точки привязки |
lon |
float | Долгота точки привязки |
Запрос к 2GIS:
GET https://catalog.api.2gis.com/3.0/suggests
?key={API_KEY}
&q={q}
&type=street,branch,building,adm_div,crossroad
&fields=items.point
&locale=ru_KZ
&country_id=4
&sort_point={lon},{lat}
Особенности:
- sort_point - сортировка по близости к выбранному городу
- Формат: {lon},{lat} (долгота первая!)
- Типы: street, branch, building, adm_div, crossroad
Архитектура
ERROR 8 Syntax Error? Some diagram description contains errors
Использование в UI
- Пользователь выбирает город (автокомплит cities)
- Координаты города сохраняются
- Пользователь вводит адрес (автокомплит addresses с привязкой к городу)
- Выбранный адрес сохраняется в
Business.address
Ограничения
| Ограничение | Описание |
|---|---|
| Только Казахстан | country_id=4 жестко задан |
| Нет кэширования | Каждый запрос идет напрямую к 2GIS |
| Нет debounce на бэке | Debounce должен быть на фронте |
| API Key на бэкенде | Ключ не передается на фронт (безопасно) |
| Нет fallback | При недоступности 2GIS - ошибка 502 |
| Rate limits | 2GIS: ~100 req/sec на ключ. Не мониторится |
| Нет геокодинга | Только suggest. Обратный геокодинг не используется |
| Координаты не сохраняются | В Business хранится только строка address, не lat/lon |