用Google GeoLocation API获取地址信息

标签:Google, Python

往下面这个地址post请求即可。详细信息可以查看Geolocation API 文档
http://www.google.com/loc/json

request_address为true时,表示也请求地址信息,false则只请求经纬度
version目前有4个版本,详见文档。
其余都是可选参数。

返回的字符串只要用Python的eval求值,就能拿到个字典了。其实它本身是个JSON,eval后直接拿JavaScript处理也是同样简单的。

代码如下:
# -*- coding: gbk -*-

import urllib2
r = urllib2.Request("http://www.google.com/loc/json", '{"request_address" : true, "version" : "1.0"}')
loc = eval(urllib2.urlopen(r).read())['location']
address = loc['address']

print u"""经度:%s
纬度:%s
水平误差:%s

地址:
    国家:%s
    国家代码:%s
    省份:%s
    城市:%s
    街道:%s""" % (loc['longitude'], loc['latitude'], loc['horizontal_accuracy'], address['country'], address['country_code'], address['region'], address['city'], unicode(address['street'], 'unicode-escape'))
我在公司取得的信息是:
经度:121.368
纬度:31.109
水平误差:25000

地址:
    国家:China
    国家代码:CN
    省份:Shanghai
    城市:Shanghai
    街道:莘沥路
差了很远,似乎也超过25000米了,但水平误差应该还没超过。

中文版:
# -*- coding: gbk -*-

import urllib2
r = urllib2.Request("http://www.google.com/loc/json", '{"request_address" : true, "version" : "1.0", "address_language": "zh_CN"}')
loc = eval(urllib2.urlopen(r).read())['location']
#多了个转换编码的步骤,为此不得不转成列表,再转回字典。
address = dict([(k, unicode(v, 'unicode-escape')) for k, v in loc['address'].items()])

print u"""经度:%s
纬度:%s
水平误差:%s

地址:
    国家:%s
    国家代码:%s
    省份:%s
    城市:%s
    街道:%s""" % (loc['longitude'], loc['latitude'], loc['horizontal_accuracy'], address['country'], address['country_code'], address['region'], address['city'], address['street'])
结果:
经度:121.368
纬度:31.109
水平误差:25000

地址:
    国家:中国
    国家代码:CN
    省份:上海市
    城市:上海市
    街道:莘沥路

0条评论 你不来一发么↓

    想说点什么呢?