1.介绍

官网地址:http://lbsyun.baidu.com/

百度地图开放平台提供了多种服务接入方式:

2 注册账号、申请AK

要使用百度地图提供的服务,需要注册百度账号、申请服务密钥等,具体步骤如下:

注册百度账号,使用手机号即可完成注册

注册完成后登录

要使用地图服务还需要申请密钥(AK),地址:http://lbsyun.baidu.com/apiconsole/key#/home

点击"创建应用"按钮,跳转到创建应用页面

应用类型下拉框选项如下:

点击"提交"按钮完成AK创建。
注意:应用类别需要根据我们使用百度地图的方式进行相应选择,如果在网页中通过js方式使用百度地图,应用类别为浏览器端,如果要通过HTTP方式使用百度地图,应用类别为服务端。

3.入门案例

3.1 案例一

<!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,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=自己AK"></script><title>地图展示</title>
</head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">// 百度地图API功能var map = new BMap.Map("allmap");    // 创建Map实例map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);  // 初始化地图,设置中心点坐标和地图级别//添加地图类型控件map.addControl(new BMap.MapTypeControl({mapTypes:[BMAP_NORMAL_MAP,BMAP_HYBRID_MAP]}));map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放
</script>

3.2 案例二

<!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,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=自己AK"></script><title>计算两点间距离</title>
</head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">// 百度地图API功能var map = new BMap.Map("allmap");map.centerAndZoom("重庆",12);  //初始化地图,设置城市和地图级别。var pointA = new BMap.Point(106.486654,29.490295);  // 创建点坐标A--大渡口区var pointB = new BMap.Point(106.581515,29.615467);  // 创建点坐标B--江北区alert('从大渡口区到江北区的距离是:'+(map.getDistance(pointA,pointB)).toFixed(2)+' 米。');  //获取两点距离,保留小数点后两位var polyline = new BMap.Polyline([pointA,pointB], {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5});  //定义折线map.addOverlay(polyline);     //添加折线到地图上
</script>

3.3 案例三

<!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,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=自己AK"></script><title>单击获取点击的经纬度</title>
</head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">// 百度地图API功能var map = new BMap.Map("allmap");map.centerAndZoom("北京",12);//单击获取点击的经纬度map.addEventListener("click",function(e){alert(e.point.lng + "," + e.point.lat);});
</script>

3.4 案例四

<!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,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=自己AK"></script><title>根据关键字检索</title>
</head>
<body>
<div id="allmap"></div>
<p>返回北京市地图上圆形覆盖范围内的“餐馆”检索结果,并展示在地图上</p>
</body>
</html>
<script type="text/javascript">// 百度地图API功能var map = new BMap.Map("allmap");            // 创建Map实例var mPoint = new BMap.Point(116.404, 39.915);map.enableScrollWheelZoom();map.centerAndZoom(mPoint,15);
​var circle = new BMap.Circle(mPoint,1000,{fillColor:"blue", strokeWeight: 1 ,fillOpacity: 0.3, strokeOpacity: 0.3});map.addOverlay(circle);var local =  new BMap.LocalSearch(map, {renderOptions: {map: map, autoViewport: false}});local.searchNearby('餐馆',mPoint,1000);
</script>

3.5 案例五

<!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=自己AK"></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>

3.6 案例六

本小节案例来调用百度地图提供的HTTP服务接口,实现地理编码,即根据提供的地址获取经纬度。


可以直接在浏览器中访问上面的接口,output参数指定为json:

output参数指定为xml:

注意:调用上面接口时使用的AK应用类别为服务端。
也可以在Java程序中调用上面的HTTP接口,并解析返回的数据:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.DecimalFormat;
import java.util.Map;
​
public class BaiduMapTest {public static void main(String[] args) {String ak = "自己AK";String address = "北京市海淀区上地十街10号";String httpUrl = "http://api.map.baidu.com/geocoding/v3/?address="+address+"&output=json&ak=" + ak;
​
​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());
​
​String data = json.toString();if (data != null && !"".equals(data)) {Map map = JSON.parseObject(data, Map.class);if ("0".equals(map.getOrDefault("status", "500").toString())) {Map childMap = (Map) map.get("result");Map posMap = (Map) childMap.get("location");double lng = Double.parseDouble(posMap.getOrDefault("lng", "0").toString()); // 经度double lat = Double.parseDouble(posMap.getOrDefault("lat", "0").toString()); // 纬度DecimalFormat df = new DecimalFormat("#.######");String lngStr = df.format(lng);String latStr = df.format(lat);String result = lngStr + "," + latStr;System.out.println(result);}}}
}

3.7 案例七

本小节案例来调用百度地图提供的HTTP服务接口,实现驾车路线规划。

可以直接在浏览器中访问上面的接口:

也可以在Java程序中调用上面的HTTP接口,并解析返回的数据:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.DecimalFormat;
import java.util.Map;
​
public class BaiduMapTest {public static void main(String[] args) {String ak = "自己AK";String origin = "40.01116,116.339303"; //起点经纬度,格式为:纬度,经度;小数点后不超过6位String destination = "39.936404,116.452562"; //终点经纬度,格式为:纬度,经度;小数点后不超过6位String httpUrl = "http://api.map.baidu.com/directionlite/v1/driving?origin="+origin+"&destination="+destination+"&ak=" + ak;
​
​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());
​
​String data = json.toString();if (data != null && !"".equals(data)) {Map map = JSON.parseObject(data, 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());System.out.println(distance);}}}
}

4.简单工具类

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.DecimalFormat;
import java.util.Map;/*** 百度地图操作工具类*/
public class BaiduMapUtils2 {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 = "自己AK";/*** 调用百度地图地理编码服务接口,根据地址获取坐标(经度、纬度)** @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();}
}

Java环境百度地图Api的使用相关推荐

  1. 百度地图 截图java_[Java教程]百度地图API 简单使用

    [Java教程]百度地图API 简单使用 0 2015-08-24 19:00:12 最近项目上需要用到百度地图进行导航,参考百度地图API完成一个例子.API地址:http://developer. ...

  2. java调用百度地图API依据地理位置中文获取经纬度

    百度地图api提供了非常多地图相关的免费接口,有利于地理位置相关的开发,百度地图api首页:http://developer.baidu.com/map/. 博主使用过依据地理依据地理位置中文获取经纬 ...

  3. Java使用百度地图API,根据地址,查询地址坐标。

    使用场景:有时候,在实际项目中,某个地图图标中,我们需要知道地址坐标.在地图上的直观显示. 步骤一: 知道百度地图API官方网站(http://lbsyun.baidu.com/),注册账号,创建应用 ...

  4. java调用百度地图api简单示例--获取国内任意两地之间距离

    老师让我们从百度地图的api上获取数据源最为两地运输距离,结果百度地图api的开发文档居然连个示例都没有...于是上网找了半天,都是一百多行的源码,我就想用个api,你给我这玩意???终于最后还是找到 ...

  5. java 接入百度地图api

    先打开接入百度地图API 官网 http://lbsyun.baidu.com/ 然后点击 开发者文档 → web服务API 如果是第一次打开 则要填写信息 验证码一堆- 如果已经注册过了,则进入这一 ...

  6. java调用百度地图API根据地理位置获取经纬度

    前言: 自己申请一个百度地图得账号,然后创建自己需要服务拿到Ak 下载地址:登录百度帐号 https://lbsyun.baidu.com/apiconsole/key 1.第一步:申请账号,这一步大 ...

  7. 百度地图批量精度和维度Java,关于百度地图API批量转换成坐标的方法

    下面的代码思路是:从页面获取馆Id数组,将其数组通过ajax提交到服务器,服务器返回馆的ID,馆名,和馆地址: 再循环地址,获取每个地址的坐标,并将馆ID和其坐标对应起来,提交到服务器更新,转换失败的 ...

  8. c语言api获取百度地图,H5调用百度地图API获取地理位置

    //获取当前位置 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ alert ...

  9. Java web与web gis学习笔记(二)——百度地图API调用

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

最新文章

  1. Word2Vec 使用总结
  2. 反编译华为U8825D“framework-res.apk”出现的错误提示(1)
  3. OpenCV进阶篇视频
  4. ubuntu 使用apt-get install 安装php5.6--php7
  5. [原创]FineUI秘密花园(二十一) — 表格之动态创建列
  6. 【Python】Matplotlib在直方图中添加概率密度曲线和数学表达式
  7. c语言单链表中头结点的创立,一个关于C语言链表头结点的问题
  8. html中iframe根据子页面内容动态修改高度
  9. 腾讯推出基于区块链存证的“点亮莫高窟”活动
  10. vscode 清空缓存_如何清除Visual Studio Code的TypeScript的intellisense缓存?
  11. 提高mysql数据库速度方法(转)
  12. MySQL字符串拼接的两种方式
  13. 虚拟服务器开启打印端口号,打印机服务器虚拟端口设置方法
  14. 计算机操作系统学习笔记----进程管理
  15. 语音质量评价和可懂度评价
  16. 2019北邮计算机机试
  17. 得到网页的最新更新时间
  18. 江苏计算机学业水平测试多少分过关,江苏学业水平测试2021年考试时间:合格性考试30分能过吗?...
  19. JS键盘事件—onkeydown,onkeyup
  20. C++中cout和cerr的区别

热门文章

  1. JDBC之ODBC数据源的建立
  2. 工业互联网从何而来?工业互联网的发展脉络
  3. CentOS7:unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]报错已解决
  4. 网络流(2)——用Ford-Fullkerson算法寻找最大流
  5. 设置input输入长度 中文一个文字等于2个引文字符 为了解决这个问题
  6. 29款漂亮幼儿折纸教程JPG,下载量比较大,强烈推荐
  7. IT项目管理——项目范围(附带案例,案例为本人项目,并非传统案例)
  8. Docker之registry安装部署
  9. 网络安全学习篇35_第二阶段_lnmp、Nginx简单配置+安装报错:C compiler cc is not found缺少环境解决、安装php5.3.28
  10. 阿里的在线评测题:多线程打印数据