沉淀,再出发:百度地图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. python笔记01-----列表操作

    在python中列表用 '[]' 表示 列表的查询操作 列表的切片 names = ["a","b","c"]             #定 ...

  2. C 扩展库 - mysql API

    MySQL API C API Data Structures MYSQL This structure represents handler for one database connection. ...

  3. PHP之mb_strripos使用

    mb_strripos (PHP 4 >= 4.0.6, PHP 5, PHP 7) mb_strrpos - Find position of last occurrence of a str ...

  4. ES6 读书笔记

    一.let和const命令 二.变量的解构赋值 三.字符串的扩展 四.数值的扩展 五.正则的扩展 六.数组的扩展 七.函数的扩展 八.对象的扩展 九.symbol 十.proxy和reflect 十一 ...

  5. Ruby(2): 基本语法上

    表达式和变量: 这两点和其他主流的编程语言基本没有差别,这里直接跳过. 需要注意的是 ruby中 x=x+1 可以写成 x+=1 但是不支持 x++ , x-- 等一元运算符  比较运算符和表达式: ...

  6. 0.ECMAScript 6 简介

    ECMAScript 6简介 ECMAScript 6 简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目 ...

  7. guava快速入门(一)

    Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 [primitives support] ...

  8. 字符串匹配问题(lfyzoj)

    问题描述 字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配.如果括号有互相包含的形式,从内到外必须是<>,(),[],{},例如.输入: [()] 输 ...

  9. csharp: Microsoft SqlHelper

    from: Microsoft Data Access Application Block for .NET  https://www.microsoft.com/en-us/download/con ...

  10. [SCOI2016]背单词——trie树相关

    题目描述 Lweb 面对如山的英语单词,陷入了深深的沉思,”我怎么样才能快点学完,然后去玩三国杀呢?“.这时候睿智的凤老师从远处飘来,他送给了 Lweb 一本计划册和一大缸泡椒,他的计划册是长这样的: ...