问题描述
我正在尝试获取用户设备的位置。但是geoip2返回的位置远离用户位置(将近20km-25km)。通过移动网络连接设备时,将设备与wifi连接时会显示不同的位置
首先,我要获取用户的IP
def get_ip(request):
xff = request.META.get('HTTP_X_FORWARDED_FOR')
if xff:
ip = xff.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR',None)
return ip
但这会为用户提供私有ip,而私有ip不在国家或城市数据集中,因此geoip2会引发错误。
所以我尝试通过网站获取公共IP地址
def get_ip(request):
from requests import get
ip = get('https://api.ipify.org').text
if ip:
return ip
现在我使用geoip2来获取用户的位置数据
def home(request,):
....
....
....
....
from django.contrib.gis.geoip2 import GeoIP2
g = GeoIP2()
ip = get_ip(request)
print(ip)
country = g.country(ip)
city = g.city(ip)
print(country,city)
lat,long = g.lat_lon(ip)
print(lat,long)
...
...
...
您能否建议一种更好的方法或正确的方法来获取用户的准确位置?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)