今天我使用百度地圖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
再次執行的時候,正確解析出,而且提取出內容了。
至此提取成功,問題解決,寫這個真的是因爲我在解決這個問題的時候搜了很多信息,都是沒有解決方案