用百度开放地图api在代码中获得两地距离
示例:
<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="initial-scale=1.0, user-scalable=no" /><style type="text/css">body, html {width: 100%;height: 100%; margin:0;font-family:"微软雅黑";}#allmap{height:500px;width:100%;}#r-result,#r-result table{width:100%;}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=9AvzGkm2h2EDbNmULlOApaiOCteZWcqF"></script><script type="text/javascript" src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script><title>根据起终点名称驾车导航</title>
</head>
<body>
<div id="allmap"></div>
<div id="driving_way"><select><option value="0">最少时间</option><option value="1">最短距离</option><option value="2">避开高速</option></select><input type="button" id="result" value="查询"/>
</div>
<div id="r-result"></div>
</body>
</html>
<script type="text/javascript">// 百度地图API功能var map = new BMap.Map("allmap");var start = "天安门";var end = "金燕龙办公楼";map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放//三种驾车策略:最少时间,最短距离,避开高速var routePolicy = [BMAP_DRIVING_POLICY_LEAST_TIME,BMAP_DRIVING_POLICY_LEAST_DISTANCE,BMAP_DRIVING_POLICY_AVOID_HIGHWAYS];$("#result").click(function(){map.clearOverlays();var i=$("#driving_way select").val();search(start,end,routePolicy[i]);function search(start,end,route){var driving = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: true},policy: route});driving.search(start,end);}});
</script>
打开该html可以看到百度地图
工具类:
/*** 百度地图操作工具类*/
public class BaiduMapUtils {public static void main(String[] args) {String origin = getCoordinate("北京市育新花园小区");String destination = getCoordinate("北京市百度大厦");Double distance = getDistance(origin, destination);System.out.println("订单距离:"+distance + "米");Integer time = getTime(origin, destination);System.out.println("线路耗时"+time+"秒");}private static String AK = "UEBQm9c3KZ5LrsO2C2qsOAs1eSdLvlzM";/*** 调用百度地图地理编码服务接口,根据地址获取坐标(经度、纬度)* @param address* @return*/public static String getCoordinate(String address){String httpUrl = "http://api.map.baidu.com/geocoding/v3/?address=" + address + "&output=json&ak=" + AK;String json = loadJSON(httpUrl);Map map = JSON.parseObject(json, Map.class);String status = map.get("status").toString();if(status.equals("0")){//返回结果成功,能够正常解析地址信息Map result = (Map) map.get("result");Map location = (Map) result.get("location");String lng = location.get("lng").toString();String lat = location.get("lat").toString();DecimalFormat df = new DecimalFormat("#.######");String lngStr = df.format(Double.parseDouble(lng));String latStr = df.format(Double.parseDouble(lat));String r = latStr + "," + lngStr;return r;}return null;}/*** 调用百度地图驾车路线规划服务接口,根据寄件人地址和收件人地址坐标计算订单距离* @param origin* @param destination* @return*/public static Double getDistance(String origin,String destination){String httpUrl = "http://api.map.baidu.com/directionlite/v1/driving?origin="+origin+"&destination="+destination+"&ak=" + AK;String json = loadJSON(httpUrl);Map map = JSON.parseObject(json, Map.class);if ("0".equals(map.getOrDefault("status", "500").toString())) {Map childMap = (Map) map.get("result");JSONArray jsonArray = (JSONArray) childMap.get("routes");JSONObject jsonObject = (JSONObject) jsonArray.get(0);double distance = Double.parseDouble(jsonObject.get("distance") == null ? "0" : jsonObject.get("distance").toString());return distance;}return null;}/*** 调用百度地图驾车路线规划服务接口,根据寄件人地址和收件人地址坐标计算订单距离* @param origin* @param destination* @return*/public static Integer getTime(String origin,String destination){String httpUrl = "http://api.map.baidu.com/directionlite/v1/driving?origin="+origin+"&destination="+destination+"&ak=" + AK;String json = loadJSON(httpUrl);Map map = JSON.parseObject(json, Map.class);if ("0".equals(map.getOrDefault("status", "500").toString())) {Map childMap = (Map) map.get("result");JSONArray jsonArray = (JSONArray) childMap.get("routes");JSONObject jsonObject = (JSONObject) jsonArray.get(0);int time = Integer.parseInt(jsonObject.get("duration") == null ? "0" : jsonObject.get("duration").toString());return time;}return null;}/*** 调用服务接口,返回百度地图服务端的结果* @param httpUrl* @return*/public static String loadJSON(String httpUrl){StringBuilder json = new StringBuilder();try {URL url = new URL(httpUrl);URLConnection urlConnection = url.openConnection();BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));String inputLine = null;while ((inputLine = in.readLine()) != null) {json.append(inputLine);}in.close();} catch (MalformedURLException e) {} catch (IOException e) {}System.out.println(json.toString());return json.toString();}
}
结果:
用百度开放地图api在代码中获得两地距离相关推荐
- 利用百度地图api将excel中的经纬度数据可视化
利用百度地图api将excel中的经纬度数据可视化 因为本人最近在研究2019年研究生数学建模华为杯D题,想将它3个excel文件汽车的经纬度数据在地图上画出来,找了很多方法才实现.现将它分享给大家, ...
- WordPress百度快速收录 API 提交代码
百度快速收录功能上线,全面继承百度移动专区天级收录功能,并且百度熊掌号天级提交收录将于 5 月 18 日(即日)暂停使用,当然需要第一时间来帮助大家利用搜索引擎工具来做好网站优化! 将以下代码添加至主 ...
- WordPress CMS百度快速收录 API 提交代码以及配置教程
百度快速收录的提交代码,百度快速收录的功能上线,是全面继承百度移动专区天级收录功能,并且天级提交功能于 5 月 18 日已经暂停使用了. 污水流量计 使用方法 将下面代码添加到你的 WordPress ...
- 抓取百度页面html,百度会抓取页面代码中的注释内容吗
百度会抓取页面代码中的注释内容吗 内容导读:百度会抓取页面代码中的注释内容吗?答案是百度会抓取,但是在提取正文的时候会直接忽略掉,也就是说页面代码的注释内容不会影响到页面质量,所以大家尽管放心. 问题 ...
- 百度离线地图API2.0 百度离线地图api,已经修改源码
百度离线地图API2.0 百度离线地图api,已经修改源码,绕过服务端验证,除了路书等需要服务端数据支持的功能外,其余功能已经全部实现,包括常用的:地图示例.地图控件添加.覆盖物添加.信息窗口展示等等 ...
- 利用百度地图API,在浏览器中找到自己的位置
首先你得有个百度地图的秘钥,http://lbsyun.baidu.com/apiconsole/key 剩下的就是编码了 这里面会用到一个javascript里的一个函数,getMyLocation ...
- 百度个性化地图如何在网页中使用?
个性化地图引入到网页中有三种方式: 一种是引入个性化编辑器中编辑好的地图json样式文件 第二种是直接复制样式ID到js中 第三种通过百度地图提供的样式模板,选择地图,然后通过JavaScriptAP ...
- 我的百度离线地图API V3.0制作
我拿到这个任务的时候是懵逼的,因为没有做过地图,一波三折才会做.我是参考很多博客结合起来做的,主要是看这篇博客: https://blog.csdn.net/wml00000/article/deta ...
- 百度语音识别rest html,delphi调用百度语音识别REST API(示例代码)
delphi调用百度语音识别REST API -20160616 -感谢 魔术猫 和 DelphiTeacher 兄的帮助解决了返回中文乱码的问题! -注:语音的录音格式目前只支持评测8k/16k采样 ...
最新文章
- [小技巧]移除C/C++源码中无关的#ifdef
- 位居新品第一、单品第二,乐视1s吊打了谁的耳光?
- 中国首枚芯片邮票问世:搭载NFC芯片 可APP读取
- 《转》Unsafe与CAS
- Spring Boot的RestTemplate 之exchange方法
- json 在后天怎么接_前台向后台传一个json数据,后台怎么接?
- cocos2dx 云彩特效
- mysql连接报java.math.BigInteger cannot be cast to java.lang.Long异常
- 55)PHP,在html嵌套PHP写法
- 英文键盘盲打最快速练习口诀和方法
- UltraCompare v21.00分析
- Python描述 LeetCode 781. 森林中的兔子
- Huawei 华为云 机器翻译调用 详解
- 如何理解高内聚,低耦合
- 安全四大顶会论文查询
- 拼多多买菜入驻永善县了,支持自提!
- 【Python3.6爬虫学习记录】(十五)Scrapy爬虫框架的应用及马赛克拼图生成
- 一个可以扩容C盘的第三方免费软件
- 如何在面试中介绍自己的项目经验(面向java改进版)
- 【评论,赢萌宠护眼小台灯】HMS Core Insights第四期,我们来聊聊:机器学习,推开AI应用的门
热门文章
- table row设置cell的html,css中display设置为table、table-row、table-cell后的作用及其注意点...
- vue 单选框样式_作为一位Vue工程师,这些开发技巧你都会吗?
- excel填充序列_excel如何快速填充数据
- 小米0扇区完整写入_真材实料霸榜DXOMARK,小米10系列凭三个卖点“感动人心”...
- db2主键自增和oracle,oracle_浅析常用数据库的自增字段创建方法汇总,DB2复制代码 代码如下:CREATEnbsp - phpStudy...
- mysql乐观和悲观锁实现_mysql实现乐观锁和悲观锁该怎么编写?
- ssh中exit命令退出远程服务器_解决Linux关闭终端(关闭SSH等)后运行的程序或者服务自动停止...
- 单调不减序列查询第一个大于等于_[力扣84,85] 单调栈
- mongodb php 安装配置,MongoDB 基本安装配置
- redis 启动无输出_深入剖析Redis系列: Redis入门简介与主从搭建