- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以我已经在网上搜索了一段时间,以寻找一个 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 block ,该函数将返回 JSfiddle 提供的相同结果。
有了这个结果,我可以将它存储在一个 python 变量中,并对它进行一些字符串连接,最终存储我准确的客户端经纬度坐标。
那么是否可以在 Python 函数中运行一些 JavaScript?
或
您能否使用 Python/Django 以某种方式读取用户在运行 javascript/HTML5 地理定位后看到的 HTML 源代码?
现在我越想这个,我就越开始认为 Javascript 将不得不通过 AJAX 将某些东西传递给 Django 服务器...
最佳答案
现在我脑子里有 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 或无线信息来获取用户的确切位置用户。 Android 和 iPhone 上传公共(public) WiFi 的 MAC 地址及其对应的坐标。这是非常准确的,但需要智能手机
在PC上也可以使用同样的方法,但是你必须控制无线网卡,然后扫描附近的SSID,然后用MAC地址查询谷歌服务(这是谷歌的付费服务)
使用网络延迟对互联网上的计算机进行三角测量
有一种方法已获得美国国家安全局的专利。我可以给你一个关于它是如何工作的提示,我可能是错的。
简化版:
在用户的地理位置范围内拥有 3 台服务器。然后尝试从每个服务器打开一个连接并测量连接到客户端需要多快。之后,通过使用光穿过每段距离的时间将该时间转换为距离。创建一个半径为该距离的圆,并根据 3 个圆的交点对用户位置进行三角测量。
您需要从您的 TCP 连接采用的每个路由器计算传播延迟(路由器处理和发送网络数据包的时间),然后从您从连接中获得的数字中减去它。考虑到用户的网速可能很慢。我附上了专利链接
关于python - Python 的最终 "Find My Geolocation"解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21198956/
我是一名优秀的程序员,十分优秀!