使用Python调用百度地图Api获取两地距离
2020-03-31 19:40
1651 查看
完整代码可以关注公众号:Romi的杂货铺
1.获取百度api接口
首先需要在百度的公众平台http://lbsyun.baidu.com/上点击控制台,如果是新用户的话需要进行注册和验证。注册和验证完毕后可以点击创建应用,填写应用名称等相关信息,应用类型根据需要进行设置,有浏览器端和服务器端两种。在这里特别说明的是,在IP白名单框里最好设置为:0.0.0.0/0,因为有时候把自己己的IP地址输进去可能也不行。
创建应用完成后我们就可以得到刚刚创建的应用的密钥(AK)
2.获取起始地点的地理编码
首先是找到获取步行距离的官方文档http://lbsyun.baidu.com/index.php?title=webapi/directionlite-v1,但是发现对应的api接口里需要起始地点的地理编码,所以首先需要获取对应起始位置的地理编码http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding。如果有其他的需求,例如找路线规划等等都可以通过说明文档进行修改
def getapiurl(myaddress): url=r"http://api.map.baidu.com/geocoding/v3/?address={}&output=json&ak={}".format(myaddress,myAK)#说明文档里给出的api接口 print(url) return url def getPosition(url): '''返回经纬度信息''' res = requests.get(url) json_data = json.loads(res.text) if json_data['status'] == 0: lat = json_data['result']['location']['lat'] # 纬度 lng = json_data['result']['location']['lng'] # 经度 else: print("Error output!") return json_data['status'] return lat, lng
3.获取起始地点的步行距离
def getdistance(startlat,startlng,endlat,endlng): #{: .6f}保留小数点后六位 distanceurl=r"http://api.map.baidu.com/directionlite/v1/walking?origin={:.6f},{:.6f}&destination={:.6f},{:.6f}&ak={}".format(startlat,startlng,endlat,endlng,myAK) res = requests.get(distanceurl) dis_json_data = json.loads(res.text) if dis_json_data['status'] == 0: distance=dis_json_data['result']['routes'][0]['distance'] print(distance)
这里通过api获取的json文件中的结构与说明文档中的结构有一些出入,所以还是要按照实际的情况灵活修改
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- python使用ctypes模块调用windowsapi获取系统版本示例
- python使用ctypes模块调用windowsapi获取系统版本示例
- 如何使用python3调用openstack keystone identity REST api接口获取X-AUTH-TOKEN
- 使用 python脚本获取函数调用关系
- 使用C#调用外部Ping命令获取网络连接情况
- 如何使用python自动登录路由器且获取页面内容
- 使用C#调用外部Ping命令获取网络连接情况
- 使用C#调用外部Ping命令获取网络连接情况
- 使用python获取本地时区的几种方法
- python调用win32下的API__&&__Win32Com__[转]使用 python 写 COM
- 使用C#调用外部Ping命令获取网络连接情况!
- 使用C#调用外部Ping命令获取网络连接情况
- [Python系列实用教程]一、Python如何使用urllib2获取网络资源
- python中使用subprocess调用外部程序
- 使用C#调用外部Ping命令获取网络连接情况
- Python使用MySQLdb创建、调用MySQL存储过程
- 使用Python获取Wikipedia 的url时出现“ERR_ACCESS_DENIED”怎么办?
- 使用dbghelp获取调用堆栈--release下的调试方法学
- 使用C#调用外部Ping命令获取网络连接情况
- 使用C#调用外部Ping命令获取网络连接情况