在 Python 中获取用户的经纬度

Posted

技术标签:

【中文标题】在 Python 中获取用户的经纬度【英文标题】:Getting the User's Latitude & Longitude in Python 【发布时间】:2013-11-04 23:34:17 【问题描述】:

我想在 python 中获取用户的位置。我认为这是可能的,因为谷歌能够做到这一点(https://maps.google.com/ 击中方向键下方的圆圈)。

有人知道怎么做吗?

【问题讨论】:

html5 提供了一些 js 函数,可以让您获取用户位置...但是根据我的经验,从 python 接口是很痛苦的...有很多 api 在线查找用户位置基于IP ...请记住,它不会非常精确 你是在客户端还是服务器上运行python?如果是客户端,是哪种客户端(例如 Windows、Mac、Mobile?) 一般来说,无论你的回答是“一个Web服务器”、“一个Windows桌面应用程序”等等,你的第一步大概应该是search PyPI。有几十个模块用于基于 IP 的地理定位、访问 OS X 的 CoreLocation API 以及您能想象到的一切。 *** 不是获取模块建议的好地方,但如果您开始使用某个模块并遇到困难,它是一个寻求帮助的好地方。 【参考方案1】:

如果您想自己动手,有些网站会以各种格式提供有关您的 IP 地址的信息。

http://ipinfo.io/json 会给出这样的结果:


  "ip": "12.34.56.78",
  "hostname": "XXXXX.com",
  "city": "Saint-Lambert",
  "region": "Quebec",
  "country": "CA",
  "loc": "45.5073,-73.5082",
  "org": "AS577 Bell Canada",
  "postal": "J4P"

就像 Joran 上面所说的那样,这并不准确。我不在圣兰伯特,我在蒙特利尔,但也不是那么远。

您可以在 Python 中使用 urllib2.urlopen 获取它,然后使用 json 模块将其转换为字典。

import json
import urllib2

def location_lookup():
  try:
    return json.load(urllib2.urlopen('http://ipinfo.io/json'))
  except urllib2.HTTPError:
    return False

location = location_lookup()

# print city and latitude/longitude
print location['city'] + ' (' + location['loc'] + ')'

对于上面的 JSON 输出,这段 Python 代码会给出

Saint-Lambert (45.5073,-73.5082)

【讨论】:

以上是关于在 Python 中获取用户的经纬度的主要内容,如果未能解决你的问题,请参考以下文章

在PHP中获取用户机器的经度和纬度[重复]

python之经纬度的获取

在c#中以指定的半径获取经纬度的范围

Python 批量获取地点经纬度坐标,并利用geopandas在地图上绘制经纬度的点

Python 批量获取地点经纬度坐标,并利用geopandas在地图上绘制经纬度的点

在 PHP 或 JavaScript 中获取用户的纬度和经度以便在 PHP 中使用