zoukankan      html  css  js  c++  java
  • 百度地图API使用-初涉


    原创地址:https://blog.csdn.net/QQ826688096/article/details/89113966

    注册百度开发者平台

    这几天接到个需求,就是给app端签到后的数据,在查看的时候进行位置的重定位。我一听,好高大上的感脚啊,我就研究了下,嗨,竟然研究了一上午,发现了不少新鲜东西,特记录一下下,给大家捋一下思路。

    注册百度开发者平台账号

    1 打开百度,然后按下图操作:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2 点击“申请密钥”后,会让你输入你的真实姓名等基本信息,如实输入后,会出现下面界面,创建一个AK:

    在这里插入图片描述
    注意:
    1) 应用名称:这个名称就是用来给你自己记录一下,申请的这个AK的值,是用于哪个项目的,方便你自己记录和辨别,因为你可以申请很多个AK值。当你申请了多个后,会有一个AK的列表。
    2) 应用类型:这里因为我是网站类型的,所以这里必须选择“浏览器端”。当你不选择浏览器端的时候,系统会给你一些提示的,建议一定要多看看。
    3) Referer白名单:这里是以后部署完项目后,那些访问地址可以访问你这个AK值,只有在这个白名单里面的IP地址值才可以访问,其他的都会返回错误信息。这里因为我是测试,所以我写了192.168.1.111,因为这是我个人电脑IP地址。当部署到正式地址后,需要类似于后缀名似的模糊地址,下图:
    在这里插入图片描述

    点击确定,AK列表

    在这里插入图片描述

    进入开发者模式

    这时候,把鼠标移到当前页面最上方的“开发文档”页签上:
    在这里插入图片描述
    然后,选择 “JavaScript API”
    在这里插入图片描述
    然后,点击 “DEMO详情”
    在这里插入图片描述

    百度开放的N多 开发者案例

    就会看到下面这界面,全是案例:
    在这里插入图片描述

    你也可以这样

    访问:http://lbsyun.baidu.com/
    然后,往下拖动,看到下面这里:
    在这里插入图片描述
    这几个都是很有用的功能,可以直接拿到简单的百度地图的api代码,教你如何使用。

    我的成功案例

    这里,我给你一个我个人实现的成功案例。(给定几个地址后,我会在页面生成地图,并标记出地图的位置来):
    Jsp代码:

    <%@ page language="java" isELIgnored="false"
    	contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <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:"微软雅黑";}
    	#mapdiv{width:100%;height:500px;}
    	p{margin-left:5px; font-size:14px;}
    	/*隐藏百度地图的版权信息*/
    	.anchorBL{ 
    		display:none; 
    	} 
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的AK值"></script>
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
    <title>百度地图ApiDemo</title>
    </style>
    </head>
    <body>
    	<div id="mapdiv" style="width: 50%; float: right;">
    		<!-- 【这里是展示百度地图的body】 -->
    	</div>
    </body>
    </html>
    <script type="text/javascript">
    	//百度地图API功能
    	
    	// 创建Map实例
    	map = new BMap.Map("mapdiv");
    	
    	// 初始化地图,设置中心点坐标和地图级别
    	map.centerAndZoom(new BMap.Point(116.21645635689414, 40.2217235498323), 17);
    	
    	// 添加带有定位的导航控件
    	var navigationControl = new BMap.NavigationControl({
    		// 靠左上角位置
    		anchor : BMAP_ANCHOR_TOP_LEFT,
    		// LARGE类型
    		type : BMAP_NAVIGATION_CONTROL_LARGE,
    		// 启用显示定位
    		enableGeolocation : true
    	});
    	
    	map.addControl(navigationControl);
    	// 设置地图显示的城市 此项是必须设置的
    	map.setCurrentCity("北京");
    
    	/** 开启鼠标滚轮缩放 2019-4-8 11:16:04*/
    	map.enableScrollWheelZoom(true);
    	var data_info = [
    		//[116.417854,39.921988,"地址:北京市东城区王府井大街88号乐天银泰百货八层"],
    		//[116.406605,39.921585,"地址:北京市东城区东华门大街"],
    		//[116.412222,39.912345,"地址:北京市东城区正义路甲5号"]
    	];
    	/*
    	 1.通过Ajax方式从后台获取地址信息
    	 2.通过接口Api,将地址信息转化为图标
    	 3.在前台通过坐标进行定位
    	 4.将地址信息转化为坐标实例
    	 访问URL:http://api.map.baidu.com/geocoder/v2/?output=json&ak=你从百度申请到的Key&address=北京市
    	*/
    	$(function() {
    		var url1 = "<%=request.getContextPath()%>/api/getAddress";
    		$.ajax(url1, {
    			async : false,
    			success : function(data) {
    				$.each(data, function(i, v) {
    					var url = "http://api.map.baidu.com/geocoder/v2/";
    					$.ajax(url, {
    						data : {
    							'address' 	: v.address,
    							'output' 	: 'json',
    							'ak' 		: '你的AK值'
    						},
    						async : false,
    						dataType : 'jsonp',
    						crossDomain : true,
    						success : function(data) {
    							data_info.push([ data.result.location.lng, data.result.location.lat, v.name + ":" + v.address ]);
    							for (var i = 0; i < data_info.length; i++) {
    								map.centerAndZoom(new BMap.Point(data_info[i][0], data_info[i][1]), 18);
    								// 创建标注
    								var marker = new BMap.Marker(new BMap.Point(data_info[i][0], data_info[i][1])); 
    								var content = data_info[i][2];
    								map.addOverlay(marker); // 将标注添加到地图中
    								addClickHandler(content, marker);
    								//跳动的动画
    								marker.setAnimation(BMAP_ANIMATION_BOUNCE); 
    							}
    						}
    					});
    				});
    			}
    		});
    	});
    	var opts = {
    		width : 250, // 信息窗口宽度
    		height : 80, // 信息窗口高度
    		title : "位置信息",  // 信息窗口标题
    		enableMessage : true //设置允许信息窗发送短息
    	};
    	function addClickHandler(content, marker) {
    		marker.addEventListener("click", function(e) {
    			openInfo(content, e)
    		}
    		);
    	}
    	function openInfo(content, e) {
    		var p = e.target;
    		var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
    		var infoWindow = new BMap.InfoWindow(content, opts); // 创建信息窗口对象 
    		map.openInfoWindow(infoWindow, point); //开启信息窗口
    	}
    </script>
    

    jsp中关键的一点是,已入百度的api

    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的AK值"></script>
    

    然后就是地图需要一个HTML元素作为容器,这样才能展现到页面上。这里我们创建了一个div元素,名字随便取了一个:mapdiv

    后台对应的java代码:

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    /**
     * @方法描述   百度地图接口使用规则
     * @初次开发   平传胜
     * @开发日期 2019年4月8日下午12:52:17
     */
    @Controller
    @RequestMapping("/api")
    public class ApiController {
    	/**
    	 * 百度地图接口(访问应用AK:你的AK值)
    	 * http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=你的AK值&callback=showLocation
    	 */
    	@RequestMapping("/apishow")
    	public String apiShow(HttpServletRequest request, HttpServletResponse response) throws Exception {
    		System.out.println("进入百度地图api的测试案例页面");
    		return "baiduApi/baiduapi";
    	}
    	
    	/**
    	 * @方法描述   获取指定数据的定位信息
    	 * @初次开发   平传胜
    	 * @开发日期 2019年4月8日下午3:42:54
    	 */
    	@RequestMapping("/getAddress")
    	@ResponseBody
    	public List<Map<String,String>> getAddress() throws Exception {
    		List<Map<String,String>> list=new ArrayList<Map<String,String>>();
    		Map<String,String> map3=new HashMap<String,String>();
    		map3.put("name","平传胜");
    		map3.put("address","北京市海淀区知春路29号院-8号楼");
    		list.add(map3);
    		return list;
    	}
    }
    

    结果如下图:
    在这里插入图片描述
    图中的红点是会跳动的哦~
    写的匆忙,日后修改。
    好了,先写到这里。
    2019-04-08 22:31:49

  • 相关阅读:
    51 nod 1109 01组成的N的倍数
    zoj 1530 Find The Multiple
    洛谷 P1124 文件压缩
    洛谷 P1270 “访问”美术馆(树形DP)
    洛谷 P1272 重建道路(树形DP)
    ♫【CSS】命名颜色
    【注释】
    -_-#【命名】BEM
    ☀【jQuery插件】DOM 延迟渲染
    ☀【组件】getRequest
  • 原文地址:https://www.cnblogs.com/QQ826688096/p/10713373.html
Copyright © 2011-2022 走看看