Как перевести координаты в место
в ходе работы появилась потребность узнать в каком городе(районе) находится пользователь приложения, и все что я нашел это только код что бы узнать свой ip
import geocoder
g = geocoder.ip('me')
print(g.latlng)
Теперь новый вопрос: как мне получить название города по IP?
Ответы (3 шт):
Смотрите, что есть в g.geojson (я смотрю в Google Colab):
{'features': [{'geometry': {'coordinates': [-95.8608, 41.2619],
'type': 'Point'},
'properties': {'address': 'Council Bluffs, Iowa, US',
'city': 'Council Bluffs',
'country': 'US',
'hostname': '63.121.122.34.bc.googleusercontent.com',
'ip': '34.122.121.63',
'lat': 41.2619,
'lng': -95.8608,
'ok': True,
'org': 'AS15169 Google LLC',
'postal': '51502',
'raw': {'city': 'Council Bluffs',
'country': 'US',
'hostname': '63.121.122.34.bc.googleusercontent.com',
'ip': '34.122.121.63',
'loc': '41.2619,-95.8608',
'org': 'AS15169 Google LLC',
'postal': '51502',
'readme': 'https://ipinfo.io/missingauth',
'region': 'Iowa',
'timezone': 'America/Chicago'},
'state': 'Iowa',
'status': 'OK'},
'type': 'Feature'}],
'type': 'FeatureCollection'}
Город тут лежит в g.geojson['features'][0]['properties']['city']: Council Bluffs.
Но можно и короче через g.city город получить, как написано в другом ответе. В общем, вся инфа там есть, читайте доки.
У объекта, который возвращает geocoder.ip есть полезные свойства:
addresscitycountrystate
и другие
Обращаться так:
import geocoder
g = geocoder.ip('me')
print(g.city)
Если через IPinfo.io, то https://ipinfo.io/IP_address/city?token=TOKEN Этот запрос выдаст только город, без остальной ненужной информации. Токен с 50к запросов бесплатный, потом можно перейти на платный план с 250к. Пример без токена: https://ipinfo.io/1.1.1.1/city И тогда не нужно координаты в город конвертить.