所以我一直在网上寻找一个Python库,它返回你确切的当前位置并发现除了你通过你的IP地址找到你的位置的廉价和不准确的方法之外没有任何可用的东西我已经在我的移动热点上进行了测试,它已经关闭了100英里。
我有另一个解决方案,但它需要将JavaScript与Python混合,我需要帮助,我只在Python / Django上工作了几天。
由于Python是服务器端,我无法找到任何可以精确定位您的精确经度和纬度的库。但是使用客户端JavaScript,这非常简单,无需任何库:
所以我想知道是否有任何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吗?
OR
您可以使用Python / Django以某种方式读取用户在运行javascript / HTML5地理位置后看到的HTML源代码吗?
我现在越想到这一点,我就越开始认为Javascript将需要AJAX到Django服务器......
答案 0 :(得分:1)
现在我脑子里有4种方法。我不知道如何实施所有这些。但是,如果你在网上搜索,你就找不到实现它们的方法。
JavaScript方法(客户端)
您可以在javascript中调用地理位置(就像您实施的那样),然后使用距该坐标最近的位置搜索数据库。
另一个MySQL查询:latitude/longitude find nearest latitude/longitude - complex sql or complex calculation
然而,这可能会有所不同。您可以通过ajax将信息发送回服务器。请记住,用户可能拒绝分享他/她的位置。如果您需要示例代码,请告诉我,我会为您编写一个代码。
IP地址查询(服务器端)
获取该用户的IP地址,并查找远程用户的城市。这并不总能给你带来好结果。有时它会消失数百英里。
如果您不想使用数据库,可以使用whois信息查找用户所在的城市。
三角测量WiFi MAC地址(需要智能手机)
如果您要构建一个支持Android或iPhone应用的后端网络服务,则可以使用他们的(Google或Apple)服务通过GPS或GPS获取用户的确切位置用户附近的无线信息。 Android和iPhone上传公共WiFi的MAC地址及其对应的坐标。这非常有用,但需要智能手机
可以在PC上使用相同的方法,但您必须控制无线网卡,扫描附近的SSID,然后使用MAC地址查询Google服务(这是付费服务来自谷歌)
使用网络延迟在互联网上对计算机进行三角测量
有一种方法获得NSA的专利。我可以给你一个关于它是如何工作的提示,我可能错了。
simplfied version:
在用户的地理位置内有3台服务器。然后尝试从每个服务器打开一个连接,并测量连接到客户端所需的速度。之后,使用每个距离的光交叉时间将该时间转换为距离。创建一个半径为该距离的圆,并从三个圆的交点三角测量用户位置。
您需要从TCP连接所使用的每个路由器计算预定deley(路由器处理和发送网络数据包的时间),然后从连接中获得的数字中减去该数据。考虑到用户可能网络速度较慢。我提供了专利链接