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

问题描述 投票:9回答:1

所以我一直在网上寻找一个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>
    >>>

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

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

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

要么

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

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

python django
1个回答
1
投票

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

JavaScript方法(客户端)

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

Database of zipcodes

MySQL query based on location

另一个MySQL查询:latitude/longitude find nearest latitude/longitude - complex sql or complex calculation

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

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

IP地址查找(服务器端)

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

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

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

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

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

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

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

简化版:

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

您需要从TCP连接的每个路由器计算propgeation deley(路由器处理和发送网络数据包的时间),然后从连接中获得的数字中减去该数据。考虑到用户可能网络速度较慢。我提供了专利链接

Link for the patent

© www.soinside.com 2019 - 2024. All rights reserved.