阿里巴巴新网站怎么做运营,wordpress免费cms主题,网站优化总结报告,电影网站做流量自制语音助手想做一个查询交通路线的功能#xff0c;于是就想到了百度地图。在百度地图的服务器端应用中#xff0c;提供了“轻量级路线规划”API接口#xff0c;正好可以满足需求。要用这个接口#xff0c;需要注册百度地图账号并创建一个服务器端的应用。有关开通百度地图…自制语音助手想做一个查询交通路线的功能于是就想到了百度地图。在百度地图的服务器端应用中提供了“轻量级路线规划”API接口正好可以满足需求。要用这个接口需要注册百度地图账号并创建一个服务器端的应用。有关开通百度地图服务器端应用的操作可以参考博文python调用百度地图api,查询地方的经度纬度将数据写入excel_python获取当前位置经纬度-CSDN博客
在百度地图开发文档中关于路径规划的示例如下所示。 在ak这里输入自己的api_key后执行就能看到规划结果了。
请注意看到红框中的内容了吗这里需要输入起始地和目的地的经纬度坐标。但我们平时只会输入具体地址这个经纬度坐标从哪儿获取这就需要用到百度地图的另一个API接口——地理编码。
在百度地图开发文档中关于地理编码的示例如下所示。 很简单吧不过有一点需要注意这里的address必须要写XX市如果不写则会返回空。
好了现在知道了路线规划的接口也知道了地理编码的接口把它们组合起来就能做一个自定义的路线规划程序了。如下是我的代码
import requestsak ‘您的AK’def local_geocode(address):
‘’‘获取地理编码’’’global akresult index0 address.find(市)
#地址中是否写了XX市的判断if index0 -1:address 上海市address
#如果地址中不含XX市默认加一个‘上海市’url https://api.map.baidu.com/geocoding/v3params {address: address,output: json,ak: ak,}response requests.get(urlurl, paramsparams)if response:resp response.json()if resp[status] 0:
#status0表示接口调用成功否则就是各种报错了result (resp[result][location][lng], resp[result][location][lat])return resultdef route_plan(loc1, loc2, typetransit):
‘’‘获取规划路线默认公交路线规划’’’global ak
origin_url https://api.map.baidu.com/directionlite/v1/url origin_url type#拼接不同的type调用不同的路线规划接口分别是driving,transit,riding,walking
orign str(loc1[1]) , str(loc1[0])destination str(loc2[1]) , str(loc2[0])
#地理编码获取的经纬度信息放到路线规划中需要把位置换一换params {origin: orign,destination: destination,ak: ak,}response requests.get(urlurl, paramsparams)if response:resp response.json()print(resp)if resp[status] 0:
#status0表示接口调用成功否则就是各种报错了distance resp[result][routes][0][distance]
#起点到终点的距离单位是米duration resp[result][routes][0][duration]
#起点到终点的耗时单位是秒data resp[result][routes][0][steps]
#具体规划路径的key是stepsfor step in data:print(step)addr1 input(输入初始地址:)
loc1 local_geocode(addr1)
addr2 input(输入目的地:)
loc2 local_geocode(addr2)
route_plan(loc1, loc2)执行上面程序可以得到如下的结果。 如果把transit改成其他三种方式得到的response数据格式会有些不同如下图设计代码的时候需要注意。 好了这就是完整的python获取百度地图路径规划的代码了。喜欢的话请给我一个赞吧