因公司项目需要,需要用到一些距离成本计算的功能和地图视图工具数据库可视化,当时也调查了很多地图开发者中心和一些国外的地图API,最终选择了百度地图和谷歌地图的api来实现项目需求,下边给大家分享一下。

百度地图

百度地图开放平台:http://lbsyun.baidu.com.
进入开发者中心,上边导航栏则是百度提供的各种接口和开发文档,并且有各个语言的代码实例。我们选用的web-api,要使用api,首先需要注册成为开发者,并申请一个密钥。
进入web-api.页面,选择获取密钥,创建一个应用,并选择自己所需要的api接口。

现在我们可以使用百度地图api来为我们服务了!

以批量算路为例:

点击进入批量算路的服务文档页面,有对步行、骑行和驾车三种计算方式的详系api解释说明。
下面做个小例子:
距离计算都是根据两地经纬度通过一定的算法来获取,所以首先需要调用百度的地图地理编码接口,将地址(尽可能详细)编码成经纬度,在进行计算。
首先是一些需要用到的jar

必须包

import java.io.IOException;
import java.net.URI;
import java.util.Map;import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

获取方法

public static void main(String[] args) {Map<String, String> params = new HashMap<String, String>();String originDouble = HttpClientUtil.doGet("http://api.map.baidu.com/geocoder/v2/?output=json&ak=自己的ak&address="+ "河南省郑州市二七广场");String desDouble = HttpClientUtil.doGet("http://api.map.baidu.com/geocoder/v2/?output=json&ak=自己的ak&address="+ "北京市长安街天安门");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");// 纬度值ֵString desLng = jsonObjectDes.getJSONObject("result").getJSONObject("location").getString("lng");String desLat = jsonObjectDes.getJSONObject("result").getJSONObject("location").getString("lat");params.put("output", "json");//输出方式为jsonparams.put("tactics", "11");//10不走高速11常规路线12 距离较短(考虑路况)13距离较短(不考虑路况)params.put("ak", "自己的ak);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);com.alibaba.fastjson.JSONArray jsonArray = com.alibaba.fastjson.JSONObject.parseObject(result).getJSONArray("result");// 获取距离、米String text = jsonArray.getJSONObject(0).getJSONObject("distance").getString("text");String value = jsonArray.getJSONObject(0).getJSONObject("distance").getString("value");System.out.println("取值text:" + text);System.out.println("取值value:" + value);}

通过HttpClientUtil进行请求。再此奉上代码:

public class HttpClientUtil {public static String doGet(String url, Map<String, String> param) {CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {URIBuilder builder = new URIBuilder(url);if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri = builder.build();HttpGet httpGet = new HttpGet(uri);response = httpclient.execute(httpGet);if (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) {CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {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);// }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) {CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {HttpPost httpPost = new HttpPost(url);StringEntity entity = new StringEntity(json,ContentType.APPLICATION_JSON);httpPost.setEntity(entity);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;}
}



完成!!

百度接口API的使用相关推荐

  1. API接口调用里的QPS指什么?百度语音API里的QPS实例说明

    QPS(query per second) 指每秒向服务发送的请求数量峰值,相当于每个API接口每秒可以允许请求的并发上限量. 举例: 百度语音 API 就有 QPS 限制. 如果你有多个客户端一起调 ...

  2. 九十三、Python使用百度云接口API实现截图,文字识别和语音合成

    @Author:Runsen @Date:2020/7/13 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...

  3. python 接入百度地图数据包下载_Python爬虫-利用百度地图API接口爬取数据并保存至MySQL数据库...

    首先,我这里有一份相关城市以及该城市的公园数量的txt文件: 分析-02.png 其次,利用百度地图API提供的接口爬取城市公园的相关信息. 所利用的API接口有两个: 1.http://api.ma ...

  4. python百度翻译api申请网页版_python3调用百度翻译api接口实现全过程

    现在很都平台的翻译api接口都开始收费了,比如谷歌.微软.yandex等等,注册非常麻烦,而且要钱,目前就百度还剩下一个最基础的翻译api不需要钱,今天我要和大家分享的是怎样使用python3调用百度 ...

  5. android百度天气接口api接口,百度天气接口api

    百度天气接口 以GET形式提交,返回JSON或XML URL:http://api.map.baidu.com/telematics/v3/weather?location={城市名}&out ...

  6. 百度天气预报API接口的一个坑

    由于疫情的关系不能出门,所以在家学习微信小程序的开发,利用百度天气预报API接口来获取天气数据,折腾了一天,总是获取不到天气数据,搞得我一头雾水... 今天我下载了百度的demo程序,利用里面提供的J ...

  7. php调用天气预报接口,PHP调用百度天气接口API实现查询实时天气

    现在,不用守着晚上7点半的时间去看第二天的天气预报,只要你有手机,有网络,便可以轻松查询实时天气,可你知道怎么用PHP实现的吗?本文将带大家学习一种调用百度天气接口的方式,直接在PHP上查看实时天气, ...

  8. python通过调用百度天气API接口获取天气信息

    python调用百度接口,获取天气信息 需要到百度注册开发者账号,通过账号获取到每个账号私有的应用访问(AK) 使用此脚本还需要district_id.csv文档,在我资源中可以免费下载,也可在百度天 ...

  9. Python3 使用百度云 API 接口实现音频文件转写

    注意事项 本文参考链接: http://dy.163.com/v2/article/detail/DKQLR7RK0517ACP7.html. 百度智能云的官方文档是有JAVA SDK文档的,如果你想 ...

  10. php 百度天气接口api接口,PHP调用百度天气接口API实现查询实时天气

    现在,不用守着晚上7点半的时间去看第二天的天气预报,只要你有手机,有网络,便可以轻松查询实时天气,可你知道怎么用PHP实现的吗?本文将带大家学习一种调用百度天气接口的方式,直接在PHP上查看实时天气, ...

最新文章

  1. 【收藏】ABAP Bom按层展开的几种实现方法
  2. OpenCV实践之路——人脸检测(C++/Python) 【转】
  3. 【bzoj2705】[SDOI2012]Longge的问题 欧拉函数
  4. ASP.NET Core应用针对静态文件请求的处理[1]: 以Web的形式发布静态文件
  5. 互斥量和临界区的区别
  6. python自定义函数画图_python matplotlib自定义colorbar颜色条-以及matplotlib中的内置色条...
  7. 读书笔记—《销售铁军》随记9-最后一篇
  8. 插件拓展 - 利用js实现n个元素重新组合
  9. mllib逻辑回归LogisticRegressionWithLBFGS LogisticRegressionModel源码分析
  10. elasticsearch 批量插入
  11. 利用ABBYY Screenshot Reader快速截取网页并识别文本
  12. 网易云音乐下载MP3的方法
  13. windows8没有剪贴板查看器clipbrd怎么办?
  14. 【ADNI】数据预处理(6)ADNI_slice_dataloader ||| show image
  15. 茶几上 清明上河图 诗句
  16. 心碎!一张照片找到救命恩人,没过几天却听到了他离世的消息
  17. 康奈尔大学计算机交叉学专业,美国康奈尔大学EE专业设置的五大方向
  18. AI首席架构师6-AICA-从数据到知识-百度知识图谱技术及应用
  19. Excel排序 九度教程第4题
  20. RNIDS PC端驱动RNDIS USB kit

热门文章

  1. 计算机网络第一章概述
  2. 【IT人物】周杰(清华,耶鲁):Google技术总监周杰创业“死海”淘金
  3. java servlet 返回404_Servlet返回“HTTP状态404请求的资源(/ servlet)不可用”
  4. python面试题(面试重点)
  5. 【博客438】Kubernetes IPAM分配IP原理
  6. ABC分析做法、步骤、Pareto图制作方法解说
  7. 企业债和公司债的四点区别
  8. DW_axi_dmac控制器(概述)
  9. 如何看懂这些该死的图形学公式
  10. Jni调用so动态库