用百度地图api计算两个地方的距离

该博客展示了如何利用百度地图API获取地理位置坐标,并计算两个城市之间的距离。通过发送HTTP请求获取JSON数据,解析得到经纬度,进一步调用距离计算接口获取精确距离。

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

/**
 * @author 距离计算
 *
 */
public class DistanceUtil {
	private static final String showLocationUrl = "http://api.map.baidu.com/geocoder/v2/?output=json&ak=RguGdBfvanKG10lrLHtUAtka&address=";
	private static final String waypointsDistanceUrl = "http://api.map.baidu.com/telematics/v3/distance?output=json&ak=RguGdBfvanKG10lrLHtUAtka&waypoints=";
	
	@SuppressWarnings("unchecked")
	public static Double twoCitysDistance(String startCityName, String endCityName){
		Double distance = 0.00;
		
		Map<String, Object> startShowLocation = JsoupTool.getJson(showLocationUrl+startCityName, null);
		Map<String, Object> startResultLocation = (Map<String, Object>) startShowLocation.get("result");
		Map<String, Object> startLocation = (Map<String, Object>) startResultLocation.get("location");
		String startLng = startLocation.get("lng").toString();
		String startLat =  startLocation.get("lat").toString();
		
		Map<String, O
<think>好的,用户想通过百度地图API计算两个地址之间的距离,我需要详细解释实现步骤。首先,我应该回忆一下百度地图API的相关文档,确保步骤正确。用户可能需要先获取API密钥,然后进行地理编码,把地址转成经纬度,再用距离计算接口。 首先,用户需要注册百度开发者账号,创建应用获取AK,这点很重要,因为所有请求都需要这个AK。然后,地理编码接口的URL结构需要正确,地址参数需要编码,可能用到URLEncode。用户可能对如何构造请求不太清楚,需要给出示例代码,比如Java和Python的。 接下来,获取到两个地址的经纬度后,使用百度地图的路线规划接口计算距离。这里需要注意,路线规划可能有多种方式,比如驾车、步行,用户可能需要根据需求选择。返回的结果是JSON格式,需要解析里面的distance字段。用户可能不熟悉JSON解析,需要示例说明。 还需要考虑异常处理,比如地址解析失败的情况,或者网络请求出错,应该提醒用户检查地址格式和网络连接。另外,注意事项部分要提到AK的保密,使用HTTPS,以及每日调用限额,这些都是实际应用中容易遇到的问题。 最后,生成相关问题,可能涉及其他坐标系的转换、批量计算、优化性能等,这些扩展问题可以帮助用户更深入应用。确保引用正确,根据提供的引用内容,引用[1]、[2]、[3]、[4]都提到了百度地图API的使用,特别是计算两点间距离的方法,所以引用标识要正确添加。</think>### 通过百度地图API计算两地址间距离的实现步骤 #### 1. 准备工作 - **注册百度开发者账号** 访问[百度地图开放平台](https://lbsyun.baidu.com/),注册账号并创建应用,获取`服务端AK(API Key)`[^1][^4]。 #### 2. 地址转坐标(地理编码) 使用`地理编码接口`将地址转换为经纬度坐标。接口地址: ``` https://api.map.baidu.com/geocoding/v3/?address={地址}&output=json&ak={你的AK} ``` **示例代码(Java)** ```java // 地址编码获取经纬度 public static JSONObject getCoordinate(String address, String ak) throws Exception { String url = "https://api.map.baidu.com/geocoding/v3/?address=" + URLEncoder.encode(address, "UTF-8") + "&output=json&ak=" + ak; // 发送HTTP请求并解析JSON结果 // 返回示例:{"status":0,"result":{"location":{"lng":116.404,"lat":39.915}}} } ``` #### 3. 计算两点间距离 使用`路线规划接口`(如驾车、步行)获取实际出行距离。接口地址示例(驾车): ``` https://api.map.baidu.com/direction/v2/driving?origin={起点坐标}&destination={终点坐标}&ak={你的AK} ``` **关键解析逻辑** ```python # Python示例(解析距离) import requests def get_distance(origin_lat, origin_lng, dest_lat, dest_lng, ak): url = f"https://api.map.baidu.com/direction/v2/driving?origin={origin_lat},{origin_lng}&destination={dest_lat},{dest_lng}&ak={ak}" response = requests.get(url).json() if response['status'] == 0: return response['result']['routes'][0]['distance'] # 单位:米 else: return -1 # 请求失败 ``` #### 4. 完整流程 1. 输入两个地址,分别调用地理编码接口获取经纬度 2. 将两坐标传入路线规划接口,提取`distance`字段 3. 返回距离值(可转换为公里或英里) #### 注意事项 - 地址需尽量详细(如包含城市名)以提高解析精度[^3] - 若需直线距离,可自行通过球面距离公式计算(精度较低)[^2] - 每日接口调用量受配额限制,需合理设计缓存机制 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值