沉淀,再出发:百度地图api的使用浅思

一、前言

  百度地图想必大家都使用过,但是看到别人使用百度地图的API时候是不是一头雾水呢,其实真正明白了其中的意义就像是调用豆瓣电影api的接口一样的简单,最重要的是我们的手中要有一份参考文档,并且明白其中的机制。

二、实现

  2.1、获得授权码

    其实很简单,首先我们对于HTML文档,引入JavaScript包,这个包就是百度地图的api接口:

http://api.map.baidu.com/api?v=2.0&ak=6Ir1ukrwWGl1Tq0DItyy2BPVOdlgV9RL

    这里我们注意一下其中的ak=xxx,这代表了百度的授权码,我们需要自己获得,获得的方法是按照http://lbsyun.baidu.com/index.php?title=subway/guide/getkey的提示一步步的注册获得即可,最后我们选择浏览器端,应用名称我们自己定义即可,白名单我们在测试的时候简单地填写一个网址就好,但在部署的时候一定要按自己的实际情况来填写。如果我们授权码错误则会提示:

    下图是获得授权码的过程:

      最终我们会获得一个授权码:

    2.2、对接口编程

     其次,我们需要编写对这个接口之中的对象,方法,事件的操作:

 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6Ir1ukrwWGl1Tq0DItyy2BPVOdlgV9RL"></script>
<script type="text/javascript">
var mp = new BMap.Map('map_container', {
/* <!-- 是否启用使用高分辨率地图。在iPhone4及其后续设备上,
可以通过开启此选项获取更高分辨率的底图,v1.2,v1.3 版本默认不开启,v1.4 默认为开启状态 -->*/
enableHighResolution: true
});
/*在指定的容器内创建地图实例,之后需要调用Map.centerAndZoom()方法对地图进行初始化。未进行初始化的地图将不能进行任何操作*/
mp.centerAndZoom('北京', 15);
/*enableScrollWheelZoom() 启用滚轮放大缩小,默认禁用*/
mp.enableScrollWheelZoom();
/*enableDoubleClickZoom() 启用双击放大,默认启用*/
mp.enableDoubleClickZoom();
/*enableKeyboard() 启用键盘操作,默认禁用。键盘的上、下、左、右键可连续移动地图。
同时按下其中两个键可使地图进行对角移动。
PgUp、PgDn、Home和End键会使地图平移其1/2的大小。+、-键会使地图放大或缩小一级*/
mp.enableKeyboard(); mp.addEventListener('click', function(e) {
var info = new BMap.InfoWindow('');
var pos = e.point;
var projection = this.getMapType().getProjection();
var lngLatStr = "经纬度:" + pos.lng + ", " + pos.lat;
var worldCoordinate = projection.lngLatToPoint(pos);
var worldCoordStr = "<br />平面坐标:" + worldCoordinate.x + ", " + worldCoordinate.y;
var pixelCoordinate = new BMap.Pixel(Math.floor(worldCoordinate.x * Math.pow(2, this.getZoom() - 18)),
Math.floor(worldCoordinate.y * Math.pow(2, this.getZoom() - 18)));
var pixelCoordStr = "<br />像素坐标:" + pixelCoordinate.x + ", " + pixelCoordinate.y;
var tileCoordinate = new BMap.Pixel(Math.floor(pixelCoordinate.x / 256),
Math.floor(pixelCoordinate.y / 256));
var tileCoordStr = "<br />图块坐标:" + tileCoordinate.x + ", " + tileCoordinate.y;
var viewportCoordinate = mp.pointToPixel(pos);
var viewportCoordStr = "<br />可视区域坐标:" + viewportCoordinate.x + ", " + viewportCoordinate.y; var overlayCoordinate = mp.pointToOverlayPixel(pos);
var overlayCoordStr = "<br />覆盖物坐标:" + overlayCoordinate.x + ", " + overlayCoordinate.y; info.setContent(lngLatStr + worldCoordStr + pixelCoordStr + tileCoordStr +
viewportCoordStr + overlayCoordStr);
mp.openInfoWindow(info, pos);
});
mp.addEventListener('rightclick', function(e) {
var info = new BMap.InfoWindow('');
info.setContent("hello,zyr!");
mp.openInfoWindow(info,e.point);
});
mp.addEventListener('dragging', function(e) {
alert("您好!");
});
</script>

     其中的容器map_container是我们定义的div标签,这样只需要简单的HTML就可以实现百度地图的功能了,完整代码如下:

 <!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" />
<title>Map Coordinate</title>
<style type="text/css">
/*<![CDATA[*/ html {
height: 100%;
}
body {
height: 100%;
margin: 0px;
padding: 0px;
}
#map_container {
height: 100%;
}
/*]]>*/
</style> </head> <body>
<div id="map_container"></div>
</body>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6Ir1ukrwWGl1Tq0DItyy2BPVOdlgV9RL"></script>
<script type="text/javascript">
var mp = new BMap.Map('map_container', {
/* <!-- 是否启用使用高分辨率地图。在iPhone4及其后续设备上,
可以通过开启此选项获取更高分辨率的底图,v1.2,v1.3 版本默认不开启,v1.4 默认为开启状态 -->*/
enableHighResolution: true
});
/*在指定的容器内创建地图实例,之后需要调用Map.centerAndZoom()方法对地图进行初始化。未进行初始化的地图将不能进行任何操作*/
mp.centerAndZoom('北京', 15);
/*enableScrollWheelZoom() 启用滚轮放大缩小,默认禁用*/
mp.enableScrollWheelZoom();
/*enableDoubleClickZoom() 启用双击放大,默认启用*/
mp.enableDoubleClickZoom();
/*enableKeyboard() 启用键盘操作,默认禁用。键盘的上、下、左、右键可连续移动地图。
同时按下其中两个键可使地图进行对角移动。
PgUp、PgDn、Home和End键会使地图平移其1/2的大小。+、-键会使地图放大或缩小一级*/
mp.enableKeyboard(); mp.addEventListener('click', function(e) {
var info = new BMap.InfoWindow('');
var pos = e.point;
var projection = this.getMapType().getProjection();
var lngLatStr = "经纬度:" + pos.lng + ", " + pos.lat;
var worldCoordinate = projection.lngLatToPoint(pos);
var worldCoordStr = "<br />平面坐标:" + worldCoordinate.x + ", " + worldCoordinate.y;
var pixelCoordinate = new BMap.Pixel(Math.floor(worldCoordinate.x * Math.pow(2, this.getZoom() - 18)),
Math.floor(worldCoordinate.y * Math.pow(2, this.getZoom() - 18)));
var pixelCoordStr = "<br />像素坐标:" + pixelCoordinate.x + ", " + pixelCoordinate.y;
var tileCoordinate = new BMap.Pixel(Math.floor(pixelCoordinate.x / 256),
Math.floor(pixelCoordinate.y / 256));
var tileCoordStr = "<br />图块坐标:" + tileCoordinate.x + ", " + tileCoordinate.y;
var viewportCoordinate = mp.pointToPixel(pos);
var viewportCoordStr = "<br />可视区域坐标:" + viewportCoordinate.x + ", " + viewportCoordinate.y; var overlayCoordinate = mp.pointToOverlayPixel(pos);
var overlayCoordStr = "<br />覆盖物坐标:" + overlayCoordinate.x + ", " + overlayCoordinate.y; info.setContent(lngLatStr + worldCoordStr + pixelCoordStr + tileCoordStr +
viewportCoordStr + overlayCoordStr);
mp.openInfoWindow(info, pos);
});
mp.addEventListener('rightclick', function(e) {
var info = new BMap.InfoWindow('');
info.setContent("hello,zyr!");
mp.openInfoWindow(info,e.point);
});
mp.addEventListener('dragging', function(e) {
alert("您好!");
});
</script> </html>

    2.3、查看官方文档

    然后我们可以参考一下百度地图的官方文档来对其中的表示有更深的理解,由此我们可以看到JavaScript的通用之处。

三、总结

   一项技术的背后其实最重要的就是理念、方法、原理和可复制性,可以看到在进行百度地图的api调用之中我们并没有使用非常复杂的方法就能拿着别人的轮子来组装出自己想要的车子了,因此,将一项技术模块化是非常重要的思想。

参考文献:https://www.cnblogs.com/shortbaby/p/4829559.html

沉淀,再出发:百度地图api的使用浅思的更多相关文章

  1. 使用百度地图API进行坐标系转换

    最近在做移动APP的定位功能的时候发现系统GPS获取的位置信息再从百度地图API获取的实际地址总是有误差,偏离了好几个街道,但百度地图本身没这个问题.在网上查找一番发现了地图的坐标系一说,下面简单介绍 ...

  2. 【百度地图API】如何制作“从这里出发”“到这里去”——公交篇

    原文:[百度地图API]如何制作"从这里出发""到这里去"--公交篇 摘要: 百度地图首页上的“从这里出发”“到这里去”,一直是开发者们很热衷的一个功能.那么, ...

  3. 百度地图API的使用

    ------------------自说自话----------------------------- 好奇怪,习惯性使用有道云笔记记录心得与知识后就很少用博客园来记录了. 但是后来想想,有些东西还是 ...

  4. 百度地图API 批量添加 带检索功能的信息窗口

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 百度地图API试用--(初次尝试)

    2016-03-17: 百度地图API申请key的步骤相对简单,不做过多阐述. 初次使用百度地图API感觉有点神奇,有些功能加进来以后有点问题,注释掉等有空再解决. 代码如下: <%@ page ...

  6. 百度地图API显示多个标注点并添加百度样式检索窗口

    原作者博客地址:http://blog.csdn.net/a497785609/article/details/24009031 在此基础上进行了修改: 1.添加闭包,将i传入内部 2.添加地图和卫星 ...

  7. Winform实现用多线程、百度地图API解析某公司的物理地址

    前言 作为一个很挫的C#新手总喜欢自己写点儿不着边际的东西,本人是个新手加菜鸟,写B/S的,工作中,任务完成了,空闲下来,总想继续学点儿什么,由此触发了本篇文章了.个人一直认为,.NET中,C/S所要 ...

  8. 如何在网页中调用百度地图api

    我想在木有提供地图接口的年代,前端工程师门要么只写上企业的具体地址,要么就是用一张标有自己位置的地图图片.但是现在不一样啦!为了增强用户体验,谷歌,甚至百度都很开放了,你可以在他们的网站上找到地图接口 ...

  9. 百度地图API多个点聚合时,标注添加的标签label地图刷新就丢失的问题解决

    当将自定义的Marker(含有Label)通过MarkerClusterer 管理的时候,当地图发生任何移动.缩放 的时候,Marker 的Label 就会自动消失. 这个问题主要是由于百度的点聚合A ...

随机推荐

  1. vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制

    一.定义[nextTick.事件循环] nextTick的由来: 由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图 ...

  2. [转]Sql Server 分页存储过程

    本文转自: 版权声明:作者:jiankunking 出处:http://blog.csdn.net/jiankunking  本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且 ...

  3. Rsyslog+ELK日志分析系统

    转自:https://www.cnblogs.com/itworks/p/7272740.html Rsyslog+ELK日志分析系统搭建总结1.0(测试环境) 因为工作需求,最近在搭建日志分析系统, ...

  4. android 模拟器无法启动问题

    很早之前就碰到过Android Studio模拟器无法启动的问题,今天终于尝试去解决了下,下面将我解决的方法记录下. 模拟器报错信息为: emulator: ERROR: x86 emulation ...

  5. MVC中学到的小知识(MVC中的跳转,传参)

    1.mvc中视图中的href="XXX",这个XXX是控制器地址,不是另一个视图.(这里的href语句只能转向控制器,不能直接转向视图),如果要实现转向视图,可以先转到控制器,然后 ...

  6. DevExpress13.2.9 控件使用经验总结

    一.换肤功能 1. 添加 DevExpress.OfficeSkins 和 DevExpress.BonusSkins 两个引用 2. 皮肤注册 DevExpress.UserSkins.BonusS ...

  7. 关于JAVA项目报表选型过程

    本人一直在走.NET技术路线,考虑到后期公司搞JAVA项目,也算是进行技术灾备,开始对JAVA技术进行关注.万事开头难,也是上来一头包.没办法,顶着上吧.上面开始分给我任务了.就是对后期项目报表进行方 ...

  8. PAT 1032. Sharing

    其实就是链表求交: #include <iostream> #include <cstdio> #include <cstdlib> #include <un ...

  9. P1025[SCOI2009]游戏

    windy学会了一种游戏.对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应.最开始windy把数字按 顺序1,2,3,……,N写一排在纸上.然后再在这一排下面写上它们对应的数字.然后又在新的 ...

  10. JavaWeb学习总结(三):Servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...