用Google GeoLocation API获取地址信息
2009 3 11 04:25 PM 4363次查看
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差了很远,似乎也超过25000米了,但水平误差应该还没超过。
纬度:31.109
水平误差:25000
地址:
国家:China
国家代码:CN
省份:Shanghai
城市:Shanghai
街道:莘沥路
中文版:
# -*- 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条评论 你不来一发么↓