Python的权威"寻找我的地理定位"解决方案

use*_*605 9 python django

所以我一直在网上寻找一个Python库,它会返回你确切的当前位置,并发现没有任何可用的东西,除非你通过你的IP地址找到你的位置的廉价和不准确的方法,我已经在我的移动热点上进行了测试,并且距离100英里.

我有另一个解决方案,但它需要将JavaScript与Python混合,我需要帮助,我只在Python/Django上工作了几天.

由于Python是服务器端,我无法找到任何可以精确定位您的精确经度和纬度的库.但是使用客户端JavaScript,这非常简单,无需任何库:

http://jsfiddle.net/3bERp/1/

所以我想知道是否有任何Python程序员在那里有更多的经验,可以在这里解释如何运行上面的javascript代码,并将javascript输出作为Python字符串返回:

    python
    >>>javascriptOutput = runJavaScript("<script> function showPosition(position) </script>")
    >>>print javascriptOutput
    <p id="long">-122.15563439999998</p> <p id="lat">37.4458668</p>
    >>>
Run Code Online (Sandbox Code Playgroud)

所以我的想法是在我在单个python函数中提供的JSfiddle URL中运行整个HTML块,它将返回JSfiddle提供的相同结果.

有了这个结果,我可以将它存储在一个python变量中并对它进行一些字符串连接,最终存储我准确的客户端经度和纬度坐标.

那么可以在Python函数中运行一些JavaScript吗?

要么

您可以使用Python/Django以某种方式读取用户在运行javascript/HTML5地理位置后看到的HTML源吗?

我现在越想到这一点,我就越开始认为Javascript将需要AJAX到Django服务器......

Ahm*_*med 2

我现在脑子里有四种方法。我不知道如何实现所有这些。但是,如果您在线搜索,您可能会找到实现它们的方法。

JavaScript 方法(客户端)

您在 javascript 中调用地理定位(就像您实现的那样),然后搜索距离该坐标最近的位置的数据库。

邮政编码数据库

MySQL基于位置的查询

另一个 MySQL 查询:纬度/经度查找最近的纬度/经度 - 复杂的 sql 或复杂的计算

然而,这可能有点偏差。您可以通过ajax将信息发送回服务器。请记住,用户可能会拒绝共享他/她的位置。

如果您需要示例代码,请告诉我,我会为您编写一个。

IP 地址查找(服务器端)

获取该用户的IP地址,并查找远程用户的城市。这并不总是会给你带来好的结果。有时会相差数百英里。

如果您不想使用数据库,可以使用 whois 信息来查找用户所在的城市。

三角测量 WiFi MAC 地址(需要智能手机)

如果您正在构建将成为 Android 或 iPhone 应用程序后端的 Web 服务,则可以使用他们(Google 或 Apple)的服务,通过使用用户附近的 GPS 或无线信息来获取用户的准确位置。Android和iPhone上传公共WiFi的MAC地址及其对应的坐标。这是非常准确的,但需要智能手机

在PC上也可以使用相同的方法,但是你必须获得无线网卡的控制权,并扫描附近的SSID,然后使用MAC地址查询Google服务(这是Google的付费服务)

使用网络延迟对互联网上的计算机进行三角测量

有一种方法已获得美国国家安全局的专利。我可以给你一个关于它是如何工作的提示,我可能是错的。

简化版本:

在用户的地理位置内拥有 3 台服务器。然后尝试从每个服务器打开连接并测量连接到客户端所需的速度。之后,使用光穿过每距离的时间将该时间转换为距离。创建一个半径为该距离的圆,并根据 3 个圆的交点对用户位置进行三角测量。

您需要从您的 TCP 连接所采用的每个路由器计算传播延迟(路由器在收到网络数据包后处理和发送网络数据包的时间),并从从连接获得的数字中减去该延迟。考虑到用户的互联网速度可能很慢。我添加了该专利的链接

专利链接