Java使用高德地图获取行驶距离等信息
步骤:(总共三个类,可直接复制使用)
官网文档:高德地图路径规划API地址
- 申请高德API使用的key(备注:key的类型要选择web服务)
- 发送http GET请求
- 获取结果
以下是代码
HTTP请求代码
package com.jplus.common.http;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
/*** 网络请求(GET和POST)* @开发者 Tiddler* @编写时间 2018年8月14日 上午9:36:57* @文件名 HttpRequest.java* @类名 HttpRequest*/
public class HttpRequest {/*** 向指定URL发送GET方法的请求** @param url 发送请求的URL* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return URL 所代表远程资源的响应结果*/public static String sendGet(String url, String param) {String result = "";BufferedReader in = null;try {String urlNameString = url + "?" + param;URL realUrl = new URL(urlNameString);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {
// System.out.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/*** 向指定 URL 发送POST方法的请求** @param url 发送请求的 URL* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。* @return 所代表远程资源的响应结果*/public static String sendPost(String url, String param) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}//使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}
}
获取结果处理代码
package com.jplus.common.amap;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;import com.jplus.common.http.HttpRequest;/*** 高德地图导航工具类* @开发者 tiddler* @编写时间 2018年8月14日 上午10:01:05* @文件名 MapNavUtil.java* @类名 MapNavUtil*/
public class MapNavUtil {private String startCoordinate;private String endCoordinate;private String applicationKey;private String param;/*** 必须要构造参数* @param startCoordinate 起点经纬度 经度在前,纬度在后* @param endCoordinate 终点经纬度 经度在前,纬度在后* @param applicationKey 高德地图应用key,需要Web服务类型的key*/public MapNavUtil(String startCoordinate, String endCoordinate,String applicationKey) {this.startCoordinate = startCoordinate;this.endCoordinate = endCoordinate;this.applicationKey = applicationKey;this.param="origin="+this.startCoordinate+"&destination="+this.endCoordinate+"&key="+this.applicationKey;}/*** 获取地图导航返回值* @return*/public MapNavResults getResults(){String sendGet = HttpRequest.sendGet("https://restapi.amap.com/v3/direction/driving", param);JSONObject jsonObject=JSONObject.fromObject(sendGet);String routeJsonString = jsonObject.get("route").toString();JSONObject routeObject=JSONObject.fromObject(routeJsonString);JSONArray jsonArray = routeObject.getJSONArray("paths");JSONObject zuiJson = jsonArray.getJSONObject(0);MapNavResults mapResult=new MapNavResults();mapResult.setDistance(zuiJson.get("distance").toString());mapResult.setDuration(zuiJson.get("duration").toString());mapResult.setTolls(zuiJson.get("tolls").toString());return mapResult;}}
结果参数POJO类(这个类根据自己所需参数配置)
package com.jplus.common.amap;
/*** 高德地图导航接口返回参数POJO* @开发者 tiddler* @编写时间 2018年8月14日 上午10:04:50* @文件名 MapNavResults.java* @类名 MapNavResults*/
public class MapNavResults {private String distance;//行驶距离private String duration;//行驶时间(单位:秒)private String tolls;//道路收费(单位:元)public String getDistance() {return distance;}public void setDistance(String distance) {this.distance = distance;}public String getDuration() {return duration;}public void setDuration(String duration) {this.duration = duration;}public String getTolls() {return tolls;}public void setTolls(String tolls) {this.tolls = tolls;}@Overridepublic String toString() {return "MapNavResults [distance=" + distance + ", duration=" + duration+ ", tolls=" + tolls + "]";}}
测试类
package com.jplus.common.http;import com.jplus.common.amap.MapNavUtil;public class TestRequest {public static void main(String[] args) {String origin="104.07,30.67";//出发点经纬度String destination="104.46,29.23";//目的地经纬度String key="2ace948ef129************b0774750";//高德用户keyMapNavUtil mapResult=new MapNavUtil(origin, destination, key);System.out.println(mapResult.getResults().toString());}
}
注:地图API使用的key换成自己的即可
Java使用高德地图获取行驶距离等信息相关推荐
- Java从高德地图获取全国地铁站数据
Java从高德地图获取全国地铁站数据. 数据来源(高德地图):http://map.amap.com/subway/index.html?&4401 采集代码 /*** 从高德地图地铁线路同步 ...
- 高德地图获取坐标距离_利用java、js或mysql计算高德地图中两坐标之间的距离
前言 因为工作的原因,最近在做与地图相关的应用,使用了高德地图,研究了下高德地图计算两坐标距离的方法,官网上提供的开发包中有相关的方法,但是我的产品中比较特殊,无法直接使用提供的方法,所以就自己封装了 ...
- 在vue中使用高德地图获取坐标与地址信息(包含点击+搜索)
首先 注册登陆高德地图 https://lbs.amap.com/ 划过头像里面有个应用管理点开 进入到应用管理打开我的应用 选择创建应用 然后按照要求填写内容,切记一定要选择web端(JS API) ...
- Java 根据高德地图获取经纬度坐标
1: 申请高德服务key /*** @param addressName* @param cityName* @Description 根据高德地图, 通过地址获取经纬度坐标* @Throws* @R ...
- 高德地图获取坐标距离_高德地图获取两个经纬度点间直线距离JS/PHP/SQL代码
最近做了几个小站,要求要定位到当前地址并且显示附近多少公里内的商家和产品. 定位好办,直接用高德地图搞定.有不需要显示地图又需要定位的页面把地图直接隐藏掉都可以.或者可以直接调用高德的定位组件. 但是 ...
- vue项目中使用高德地图获取用户当前位置信息
项目背景是用vue开发的小程序,需要获取当前用户的地理位置,折腾了好久终于弄好了,今天分享给大家,话不多说,let's go! 第一步:在index.html页面引入高德地图 <script t ...
- 高德地图获取坐标距离_计算两个坐标点之间的距离(高德地图)
/** * 计算两点的距离 * * @param fromPoint * @param toPoint * @return 返回String类型带距离单位 */ public static Strin ...
- 高德地图获取坐标距离_【转】根据高德地图得出的坐标算出两点之间的距离
摘自 http://blog.csdn.net/u012251421/article/details/41242891 public static string GetDistance(double ...
- Java调用高德地图API根据详细地址获取经纬度
Java调用高德地图API根据详细地址获取经纬度 官方API:https://lbs.amap.com/api/webservice/guide/api/georegeo * Web服务API 地理/ ...
最新文章
- 3D视觉技术的6个问答
- 动态规划算法-03背包问题
- NOIP模拟测试34「次芝麻·呵呵呵·长寿花」
- 填问卷,得《2015中国呼叫中心知识库现状与问题报告》
- 无线打印服务器 惠普打印机,连接您的HP无线打印机 | 无线打印中心 | 惠普中国...
- 边缘设备上的实时AI人员检测:在Raspberry Pi上测试SSD模型
- 动态数组 —— 框架搭建
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_06 Properties集合_2_Properties集合中的方法store...
- SQL SERVER 数据库修复方法 (数据库变为 “可疑“)
- (Demo3D 学习笔记)案例2:飞板传输货物,并按指定货位上架
- 三角函数在c语言中应用,三角函数在前端动画中的应用
- 看山不是山,看水不是水
- Win10安装程序报错2503和2502错误解决方案
- 写给后端开发看的安卓入门
- 讲人话科普,Python是个啥?为啥大家都在学?
- Exception in thread main java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Wi
- 阿里云域名解析网络和服务架构设计(二) 之云解析DNS-全局流量管理
- 一次linux 【Mirai蠕虫】的应急处置
- 重装系统如何做到三步装机
- 深富策略:价值将主导4季度行情9月是布局良机