说明
百度地图的api还是蛮大方的,反正个人是肯定够用的。没想到还有天气接口,以后也可以玩一玩。本篇实现计算两个地址间的距离。
内容
1 地址转为经纬度
使用这个接口进行地址转换坐标。
第一次提交报APP 服务禁用
,这时候就进入App的设置,我比较怕麻烦,一次全勾上了。
随意输入一个地址
address ='上海浦东国际机场卫星厅'
---
resp = req.get(url_template % (address , ak ))
resp.text
'showLocation&&showLocation({"status":0,"result":{"location":{"lng":121.8150900202384,"lat":31.15747782869679},"precise":0,"confidence":50,"comprehension":57,"level":"飞机场"}})'
对应输出的字段如下
为了更容易解析内容(后端用),稍微修改请求的url, 这样直接用resp.json()就能得到字典了。
http://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&output=json&ak=您的ak【&callback=showLocation 这部分删掉】 //GET请求
2 计算两个点之间的距离
其实有个两点经纬度,直接套用球面距离就能算出来。我想要的是驾车路线。
- 驾车路线规划
http://api.map.baidu.com/directionlite/v1/driving?origin=40.01116,116.339303&destination=39.936404,116.452562&ak=您的AK //GET请求
import requests as req
url_template1 = 'http://api.map.baidu.com/directionlite/v1/driving?origin=%s,%s&destination=%s,%s&ak=%s'
# 输入起始和目标维度,经度,返回包含路径/时间在内的结果
def baidu_distance_between_coord(start_point,end_point, ak = 'YOURAK'):
resp = req.get(url_template1 % (*start_point, *end_point , ak ))
return resp.json()
---
{'status': 0,
'message': 'ok',
'result': {'origin': {'lng': 121.530908, 'lat': 31.234879867016},
'destination': {'lng': 121.81509, 'lat': 31.157476857729},
'routes': [{'distance': 40372,
'duration': 2988,
'traffic_condition': 1,
'toll': 0,
'restriction_info': {'status': 0},
'steps': [{'leg_index': 0,
'distance': 43,
'duration': 2,
'direction': 10,
'turn': 3,
...
里面的路径和时间是我现在关心的。