Сразу оговорюсь, это пост- реклама.
Написал Telegram бота для знакомств (поиск собутыльника). Пользователь отправляет свою геопозицию (широту и долготу), а боту нужно предложить людей, живущих рядом.
Нашел на просторах интернета HTTP Геокодер от Яндекса. Что-то около 25000 запросов в месяц бесплатно. Ты отправляешь запрос с широтой и долготой, а сервис тебе населенный пункт (район, улица и т.д.).
Ссылка на сервис:
https://yandex.ru/maps-api/products/geocoder-api
Подключить его не сложно (документация хорошая).
Приведу пример запроса:
PARAMS = {
"apikey":"ваш api key",
"format":"json",
"lang":"ru_RU",
"kind":"locality",
"geocode": "долгота, широта"
}
#отправляем запрос по адресу геокодера.
try:
r = requests.get(url="https://geocode-maps.yandex.ru/1.x/", params=PARAMS)
#получаем данные
json_data = r.json()
#вытаскиваем из всего пришедшего json именно строку с полным адресом.
address_str = json_data["response"]["GeoObjectCollection"]["featureMember"][0]["GeoObject"]["metaDataProperty"]["GeocoderMetaData"]["AddressDetails"]["Country"]["AddressLine"]
#возвращаем полученный адрес
return address_str
except Exception as e:
logger2.error(e, exc_info=True)
#если не смогли, то возвращаем ошибку
return "error"
Поменяйте только ваш apikey и широту с долготой. Запрос вернет населенный пункт по заданным данным (долгота и широта).
Ссылка на моего бота:
http://t.me/drinking_buddy_2025_bot
Спасибо за внимание