今天我使用百度地图api获取地址,我是通过发送HTTP服务实现的(当然这其中肯定要使用自己的秘钥),返回的格式你可以自己决定,可以是xml或者json。
我这里提供一个例子吧:
而百度地图提供的例子是这样的:
http://api.map.baidu.com/geocoder/v2/ ?ak=E4805d16520de693a3fe707cdc962045 &callback=renderReverse &location=39.983424,116.322987 &output=json &pois=1
我提取返回的json中的位置信息,提取方法代码如下:
#encoding=utf8 import json import urllib2 import httplib #import urllib url = 'http://api.map.baidu.com/geocoder/v2/' ak = 'XXX' #百度地图api密钥 #back='&callback=renderReverse&location=' back='&location=' location='34.992654,108.589507' output = '&output=json&pois=0' url = url + '?' + ak + back + location + output temp = urllib2.urlopen(url) #console.log(data) hjson = json.loads(temp.read()) location = hjson["result"]["formatted_address"] #省,市,县 print location info = hjson["result"]["sematic_description"] #详细描述 print info
刚刚开始的时候我是按照百度地图提供的例子去拼接 url 的,于是每次我调用的时候总是会提示一下错误的:
我搜了很多这个问题的解决方案,都说是格式问题,需要ASCLL的格式才能解析,解决方法是修改配置文件的编码方式,但是说的不清楚,根本就无法动手,所以我真的没辙了,我最后是看看百度地图api给的文档,无意中观察到了他给的例子是带返回类型的,于是我将url的内容修改了:
原内容是这样的:
http://api.map.baidu.com/geocoder/v2/ ?ak=E4805d16520de693a3fe707cdc962045 &callback=renderReverse &location=39.983424,116.322987 &output=json &pois=1修改后的是:(除掉callback就行)
http://api.map.baidu.com/geocoder/v2/ ?ak=E4805d16520de693a3fe707cdc962045 &location=39.983424,116.322987 &output=json &pois=1再次执行的时候,正确解析出,而且提取出内容了。
至此提取成功,问题解决,写这个真的是因为我在解决这个问题的时候搜了很多信息,都是没有解决方案