【问题标题】:How to get user current location with lat and long如何使用经纬度获取用户当前位置
【发布时间】:2021-02-09 19:11:33
【问题描述】:

我关注了geocoder一段时间,获取了用户当前的位置和信息,并单独获取了lat long值。

我试过的代码。

import geocoder
myloc = geocoder.ip('me')
print(myloc.latlng)
print(geocoder.ipinfo())

获取info 值是可以的。但经纬度值似乎不同。它显示了一个几乎8~9km 的距离位置。似乎运行时间也有点长。 有没有其他方法可以更快地获得足够接近 lat long 值和运行时间?

【问题讨论】:

    标签: python geolocation


    【解决方案1】:

    您需要了解 IP 地理定位的工作原理,才能知道为什么无法获得准确的结果。

    1- IP 地理位置使用您的公共 IP 地址来定位您。大多数情况下,此地址是由您的互联网提供商分配给您的。

    这不是您的计算机或您家的 IP,而是您的 Internet 提供商设备之一的 IP(它们到 Internet 的出口点、其基础设施内某处路由器的 IP 或其他任何东西)。

    2- 没有附加到 IP 地址的位置信息,根据您使用的 Geolocation API,结果可能或多或少是精确的。我使用 Abstract Geolocation 是因为它免费、准确并且可以实时运行:https://www.abstractapi.com/ip-geolocation-api 您需要创建一个帐户来获取您的 API 密钥,这只需几秒钟。

    3- 地理编码器有时可能会很慢。调用 API 就像通过 Geocoder 一样简单,因此您可以不用它并获得更快的响应:

    import requests
    import json
    
    response = requests.get("https://ipgeolocation.abstractapi.com/v1/?api_key=YOUR_API_KEY")
    data = json.loads(response.content)
    print(data)
    

    这将显示有关您的 IP 地址的大量信息,您可以选择添加ip_address 参数以获取有关另一个 IP 的信息。

    【讨论】:

      【解决方案2】:

      geocoder 使用您的 ip 来获取位置(而不是使用更先进的技术,如 WIFI SSID 映射和 GPS),这并不那么准确。

      来自iplocation.net

      1. 基于 IP 的地理定位有多准确?

      地理位置数据库的准确性取决于您使用的数据库。对于 IP 到国家/地区的数据库,一些供应商声称提供 98% 到 99% 的准确度,尽管典型的 Ip2Country 数据库准确度更像是 95%。对于 IP 到区域(或城市),如果相邻城市被视为正确,则准确度范围为 50% 到 75%。考虑到没有官方的 IP-to-Region 信息来源,50+% 的准确率已经相当不错了。

      您可以尝试此处提到的方法:https://github.com/joeljogy/Getting-GeoLocation 以获得更准确的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多