高德地图接口调用
高德地圖api的調用方法
前言
高德地圖開放平臺有很多提供開發者使用的工具,https://lbs.amap.com/,訪問官網注冊。一、創建應用獲取key,選擇api類型
在開放平臺里面注冊后,打開我的應用,并創建應用,回到首頁點擊開發支持里的web服務API,里面有大量的說明文檔和類型接口,開發者可以根據實際情況選擇,操作上基本上大同小異。
二、使用步驟
這里以調用路徑規劃里的騎行路徑規劃為例子。1.分析接口組成(參數類型,含義等)
這里提到一個url和get方法,還有一些必要參數,下面直接上代碼: import requests # 導入requests import re # 正則等下會應用到提參 if __name__ == '__main__':url = 'https://restapi.amap.com/v4/direction/bicycling?'params = {'key': 'c26090cfad60515aa67024f2c4c644db', # 應用key值'origin': 'origin', # 輸入起點經緯度'destination': 'destination', # 輸入終點經緯度'output': 'json'# 輸出格數 可以是xml 這里為了方便直接json}r = requests.get(url=url, params=params).text # get請求后面除了帶上url,還有參數集params
pycharm輸出:
json如下:
是不是很亂,下面我們來清洗數據
2.分析json屬性值
代碼如下(示例):
"destination":"116.465302,40.004717","origin":"116.481028,39.989643" "paths":[] "orientation":"" . . . @等等,包括方向,距離,道路名稱的都是需要的吧 @這里直接用上正則來匹配它們,為什么不用xpath,bs4?后者對于json格式來說操作性不靈活,所以這里直接上手正則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.每種屬性值提取后,可以優化使用
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]給一個循環讓輸出值按一步步來實現,更加直觀。
origin = input('inter a origin: ' + str(''))destination = input('inter a destination: ' + str(''))'origin': origin,'destination': destination,
經緯度可以自由填寫
全部代碼
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)總結
- 上一篇: Windows Server 2016
- 下一篇: 制作js原生瀑布流插件