高德地图接口调用
高德地圖api的調(diào)用方法
前言
高德地圖開(kāi)放平臺(tái)有很多提供開(kāi)發(fā)者使用的工具,https://lbs.amap.com/,訪問(wèn)官網(wǎng)注冊(cè)。一、創(chuàng)建應(yīng)用獲取key,選擇api類(lèi)型
在開(kāi)放平臺(tái)里面注冊(cè)后,打開(kāi)我的應(yīng)用,并創(chuàng)建應(yīng)用,回到首頁(yè)點(diǎn)擊開(kāi)發(fā)支持里的web服務(wù)API,里面有大量的說(shuō)明文檔和類(lèi)型接口,開(kāi)發(fā)者可以根據(jù)實(shí)際情況選擇,操作上基本上大同小異。
二、使用步驟
這里以調(diào)用路徑規(guī)劃里的騎行路徑規(guī)劃為例子。1.分析接口組成(參數(shù)類(lèi)型,含義等)
這里提到一個(gè)url和get方法,還有一些必要參數(shù),下面直接上代碼: import requests # 導(dǎo)入requests import re # 正則等下會(huì)應(yīng)用到提參 if __name__ == '__main__':url = 'https://restapi.amap.com/v4/direction/bicycling?'params = {'key': 'c26090cfad60515aa67024f2c4c644db', # 應(yīng)用key值'origin': 'origin', # 輸入起點(diǎn)經(jīng)緯度'destination': 'destination', # 輸入終點(diǎn)經(jīng)緯度'output': 'json'# 輸出格數(shù) 可以是xml 這里為了方便直接json}r = requests.get(url=url, params=params).text # get請(qǐng)求后面除了帶上url,還有參數(shù)集params
pycharm輸出:
json如下:
是不是很亂,下面我們來(lái)清洗數(shù)據(jù)
2.分析json屬性值
代碼如下(示例):
"destination":"116.465302,40.004717","origin":"116.481028,39.989643" "paths":[] "orientation":"" . . . @等等,包括方向,距離,道路名稱(chēng)的都是需要的吧 @這里直接用上正則來(lái)匹配它們,為什么不用xpath,bs4?后者對(duì)于json格式來(lái)說(shuō)操作性不靈活,所以這里直接上手正則distance_data = '"distance":(.*?),' duration_data = '"duration":(.*?),' action_data = '"action":"(.*?)"' instruction_data = '"instruction":"(.*?)"' orientation_data = '"orientation":"(.*?)"' polyline_data = '"polyline":"(.*?)"' road_data = '"instruction":"(.*?)"' steps_data = '"steps":(.*?),"errcode"'distance_list = re.findall(distance_data, r) duration_list = re.findall(duration_data, r) action_list = action_debug instruction_list = re.findall(instruction_data, r) orientation_list = re.findall(orientation_data, r) polyline_list = re.findall(polyline_data, r) road_list = re.findall(road_data, r)3.每種屬性值提取后,可以優(yōu)化使用
n = len(action_debug)print('一共' + str(n) + '步')for a in range(n):print("第" + str(a) + '步')distance_list = re.findall(distance_data, r)[a]duration_list = re.findall(duration_data, r)[a]action_list = action_debug[a]instruction_list = re.findall(instruction_data, r)[a]orientation_list = re.findall(orientation_data, r)[a]polyline_list = re.findall(polyline_data, r)[a]road_list = re.findall(road_data, r)[a]給一個(gè)循環(huán)讓輸出值按一步步來(lái)實(shí)現(xiàn),更加直觀。
origin = input('inter a origin: ' + str(''))destination = input('inter a destination: ' + str(''))'origin': origin,'destination': destination,
經(jīng)緯度可以自由填寫(xiě)
全部代碼
import requests import redistance_data = '"distance":(.*?),' duration_data = '"duration":(.*?),' action_data = '"action":"(.*?)"' instruction_data = '"instruction":"(.*?)"' orientation_data = '"orientation":"(.*?)"' polyline_data = '"polyline":"(.*?)"' road_data = '"instruction":"(.*?)"' steps_data = '"steps":(.*?),"errcode"'origin = input('inter a origin: ' + str('')) destination = input('inter a destination: ' + str(''))if __name__ == '__main__':url = 'https://restapi.amap.com/v4/direction/bicycling?'params = {'key': 'c26090cfad60515aa67024f2c4c644db','origin': origin,'destination': destination,'output': 'json'}r = requests.get(url=url, params=params).textprint(r)steps_list = re.findall(steps_data, r)[0]action_debug = re.findall(action_data, r)str_list = ['']n = len(action_debug)print('一共' + str(n) + '步')for i in range(n):if action_debug[i] in str_list:action_debug[i] = 'none'print(action_debug)for a in range(n):print("第" + str(a) + '步')distance_list = re.findall(distance_data, r)[a]duration_list = re.findall(duration_data, r)[a]action_list = action_debug[a]instruction_list = re.findall(instruction_data, r)[a]orientation_list = re.findall(orientation_data, r)[a]polyline_list = re.findall(polyline_data, r)[a]road_list = re.findall(road_data, r)[a]print(distance_list, duration_list, action_list, instruction_list, orientation_list, polyline_list, road_list)總結(jié)
- 上一篇: Windows Server 2016
- 下一篇: 制作js原生瀑布流插件