Python 全栈系列106 -调用百度地图api计算两点间距离和行车时间

本文介绍了如何利用百度地图API将地址转换为经纬度,并计算两个地点之间的驾车路线和距离。首先,通过Geocoding接口将地址转化为坐标,然后使用DirectionLite API获取驾车路线规划,包括距离和预计行驶时间。示例代码展示了从上海浦东国际机场卫星厅到另一个位置的驾车距离和路径详情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

百度地图的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,
...

在这里插入图片描述

里面的路径和时间是我现在关心的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值