运用百度地图Http接口计算两地行车距离
最近做的一个项目需要我计算两地的行车距离,而不是直线距离
那肯定要用到相关的地图API啊,我选了百度地图
我设定的传入的参数有两个,分别的是出发地和目的地的区(县)名
一开始用的是JS的SDK来计算,但是对网络要求有点高,网络稳定的时候能计算出来,不稳定就计算不出来了,通过看百度地图开发API文档,我选择了通过Http接口的方式
首先在网上找了一个封装好的HttpClientUtil
public class HttpClientUtil {public static String doGet(String url, Map<String, String> param) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 创建uriURIBuilder builder = new URIBuilder(url);if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri = builder.build();// 创建http GET请求HttpGet httpGet = new HttpGet(uri);// 执行请求response = httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doGet(String url) {return doGet(url, null);}public static String doPost(String url, Map<String, String> param) {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);// 创建参数列表if (param != null) {List<NameValuePair> paramList = new ArrayList<>();for (String key : param.keySet()) {paramList.add(new BasicNameValuePair(key, param.get(key)));}// 模拟表单UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);httpPost.setEntity(entity);}// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {response.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return resultString;}public static String doPost(String url) {return doPost(url, null);}public static String doPostJson(String url, String json) {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);// 创建请求内容StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);httpPost.setEntity(entity);// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {response.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return resultString;}
}
下面是我自己写的计算两地距离的Util:
public class CalculateDisUtil {//origin:出发地地名,如:余杭区//destination:目的地地名,如:黄浦区//返回两地的行车距离,如:234.56公里public static String distance(String origin, String destination){Map<String, String> params = new HashMap<>();String originDouble = HttpClientUtil.doGet("http://api.map.baidu.com/geocoder/v2/?output=json&ak=你的key&address=" + origin);String desDouble = HttpClientUtil.doGet("http://api.map.baidu.com/geocoder/v2/?output=json&ak=你的key&address=" + destination);com.alibaba.fastjson.JSONObject jsonObjectOri = com.alibaba.fastjson.JSONObject.parseObject(originDouble);com.alibaba.fastjson.JSONObject jsonObjectDes = com.alibaba.fastjson.JSONObject.parseObject(desDouble);String oriLng = jsonObjectOri.getJSONObject("result").getJSONObject("location").getString("lng");String oriLat = jsonObjectOri.getJSONObject("result").getJSONObject("location").getString("lat");System.out.println(oriLat+"|"+oriLng);String desLng = jsonObjectDes.getJSONObject("result").getJSONObject("location").getString("lng");String desLat = jsonObjectDes.getJSONObject("result").getJSONObject("location").getString("lat");System.out.println(desLat+"|"+desLng);params.put("output","json");params.put("ak","你的key");params.put("origins",oriLat+","+oriLng+"|"+oriLat+","+oriLng);params.put("destinations",desLat+","+desLng+"|"+desLat+","+desLng);String result = HttpClientUtil.doGet("http://api.map.baidu.com/routematrix/v2/driving", params);JSONArray jsonArray = com.alibaba.fastjson.JSONObject.parseObject(result).getJSONArray("result");String distanceString = jsonArray.getJSONObject(0).getJSONObject("distance").getString("text");return distanceString;}
}
关于上面请求url的参数,只要看一下”批量算路”的服务文档即可
运用百度地图Http接口计算两地行车距离相关推荐
- Python通过百度地图API批量计算两地路线距离(货车路线规划)
与之前普通车辆的代码大体相似,只是货车参数较多,根据自己需要设定. 需要注意的是百度地图开发者的Web API 免费额度是不提供货车路线规划数据的,因此有这个需求的话,需要付费购买.import pa ...
- Python通过高德地图API批量计算两地路线距离
公司需求批量计算两地之间行车距离,故此记录一下,数据接口采用高德地图开发者api,需要注册,注册后免费版的数据量已够满足大多数使用. import pandas as pd import reques ...
- 百度地图java计算2个坐标建距离_Java开发之百度地图2 :计算两地之间的距离
package com.***********.util; import java.awt.geom.Point2D; /** * 百度工具类 * * @author qyx * */ public ...
- Java开发之百度地图2 :计算两地之间的距离
package com.***********.util;import java.awt.geom.Point2D;/*** 百度工具类* * @author qyx**/ public class ...
- php 地图 距离,PHP计算百度地图两个GPS坐标之间距离的方法
这篇文章主要介绍了PHP计算百度地图两个GPS坐标之间距离的方法,是针对百度地图接口开发的典型应用,需要的朋友可以参考下 本文实例讲述了PHP计算百度地图两个GPS坐标之间距离的方法.分享给大家供大家 ...
- vue中引用高德地图根据经纬度计算两地距离
vue中引用高德地图根据经纬度计算两地距离 一.示例图: npm安装 npm install vue-amap --save 在min.js文件中引入vue-amap import VueAMap f ...
- gps两点距离 php,PHP应用:PHP计算百度地图两个GPS坐标之间距离的方法
<PHP应用:PHP计算百度地图两个GPS坐标之间距离的方法>要点: 本文介绍了PHP应用:PHP计算百度地图两个GPS坐标之间距离的方法,希望对您有用.如果有疑问,可以联系我们. 本文实 ...
- WebApiClient百度地图服务接口实践
1. 文章目的 随着WebApiClient的不断完善,越来越多开发者选择WebApiClient替换原生的HttpClient,然而在应用到实际项目中多多少少会遇到一些项目结合上的疑问和困难,本文将 ...
- 通过腾讯地图、高德地图、百度地图开发接口获取坐标对应的周边相关信息
通过腾讯地图.高德地图.百度地图开发接口获取坐标对应的周边相关信息 更新: 以前出于好意暴露了个人的KEY,现已被烂用.为不影响您的业务,请使用我的KEY的朋友去申请自己的KEY,我的KEY将在不久后 ...
最新文章
- 数据库定时导出和互备一例
- linux下用户切换
- axios vue 回调函数_VUE使用axios调用后台API接口的方法
- crash分析中有用的管道命令
- java字节输出流方法,Java-IO:File和字节输入输出流
- Python学生成绩处理专业版
- java构造方法编写_Java开发 Debug运行+类的编写+构造方法+方法重载+this【学习篇6】...
- 睡眠 应该用 a加权 c加权_?焦虑自测 ,看看你的焦虑程度到底有多深?是否影响睡眠?...
- PostgreSQL与MySQL语法对比总结
- 繁凡的 ACM 退役记(一名普通算法竞赛选手与博主的竞赛生涯回忆录)凡是过往,皆为序章
- DVD转RMVB及DVD转AVI相关教程
- 浏览器登录系统登录不进去的问题
- 可汗学院公开课: 统计学 _0 基本数学知识梳理
- 【2018年11月12日】其他化学制品行业的股票估值和排名
- rsh服务配置主机无密码访问
- 【Vuejs】1017- Vue3 效率提升主要表现在哪些方面?
- Android开发中App演示Gif效果动画的制作过程详讲
- 正则表达式 匹配中文,英文字母和数字及_长度详解
- centos7操作系统下编译安装veracrypt
- IDEA如何使用Drop Frame退回上一步Debug