GeoDjango:使用geoip2获得准确的设备位置

问题描述

我正在尝试获取用户设备的位置。但是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 (将#修改为@)