关于百度地图api的使用心得

可以参考官方demo,已经相当全面了,这是支持javascript,android,ios的使用方案,碎玉前端范畴,项目需要也了解了一下。

官方demo地址 百度地图api DEMO

下面的内容大部分参考自:http://www.cnblogs.com/xuhongfei/archive/2013/04/10/3011964.html


总结一下

1.首先是要申请ak,初学的话一般都是在浏览器上查看,所以可以选择新增的应用范围市浏览器,选择web服务或者其他的在浏览器上是无法查看的;

2.来分析下代码模块

这是引入的百度地图api


var map = new BMap.Map("container"); // 创建地图实例

地图需要一个HTML元素作为容器,这样才能展现到页面上。这里我们创建了一个div元素并制定它的大小。地图会根据容器大小调整自身尺寸。

命名空间 

API使用BMap作为命名空间,所有类均在该命名空间之下,比如:BMap.Map、BMap.Control、BMap.Overlay。

上面的代码位于BMap命名空间下的Map类表示地图,通过new操作符可以创建一个地图实例。其参数可以是元素id也可以是元素对象。

var point = new BMap.Point(116.404, 39.915); // 创建点坐标

这里我们使用BMap命名空间下的Point类来创建一个坐标点。Point类描述了一个地理坐标点,其中116.404表示经度,39.915表示纬度。

map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别

在创建地图实例后,我们需要对其进行初始化,BMap.Map.centerAndZoom()方法要求设置中心点坐标和地图级别。
地图必须经过初始化才可以执行其他操作。


在创建地图实例后,我们需要对其进行初始化,BMap.Map.centerAndZoom()方法要求设置中心点坐标和地图级别。
地图必须经过初始化才可以执行其他操作。

地图操作 

地图被实例化并完成初始化以后,就可以与其进行交互了。API中的地图对象的外观与行为与百度地图网站上交互的地图非常相似。它支持鼠标拖拽、滚轮缩放、双击放大等交互功能。您也可以修改配置来改变这些功能。 

您还可以通过编程的方式与地图交互。Map类提供了若干修改地图状态的方法。例如:setCenter()、panTo()、zoomTo()等等。 

下面示例显示一个地图,等待两秒钟后,它会移动到新中心点。panTo()方法将让地图平滑移动至新中心点,如果移动距离超过了当前地图区域大小,则地图会直跳到该点。 

1. var map = new BMap.Map("container");   

2. var point = new BMap.Point(116.404, 39.915);   

3. map.centerAndZoom(point, 15);   

4. window.setTimeout(function(){   

5.  map.panTo(new BMap.Point(116.409, 39.918));   

6. }, 2000);   

var map = new BMap.Map("container");

var point = new BMap.Point(116.404, 39.915);

map.centerAndZoom(point, 15);

window.setTimeout(function(){

 map.panTo(new BMap.Point(116.409, 39.918));

}, 2000);

                                

地图控件概述 

百度地图上负责与地图交互的UI元素称为控件。百度地图API中提供了丰富的控件,您还可以通过BMap.Control来实现自定义控件。 

地图API中提供的控件有:

· Control:控件的抽象基类,所有控件均继承此类的方法、属性。通过此类您可实现自定义控件。 

· NavigationControl:地图平移缩放控件,默认位于地图左上方,它包含控制地图的平移和缩放的功能。 

· OverviewMapControl缩略地图控件,默认位于地图右下方,是一个可折叠的缩略地图。 

· ScaleControl比例尺控件,默认位于地图左下方,显示地图的比例关系。 

· CopyrightControl版权控件,默认位于地图左下方。 

所有这些控件都基于BMap.Control类。

向地图添加控件

可以使用BMap.Map.addControl()方法向地图添加控件。在此之前地图需要进行初始化。例如,要将标准地图控件添加到地图中,可在代码中添加如下内容: 

1. var map = new BMap.Map("container");   

2. map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);   

3. map.addControl(new BMap.NavigationControl());  

var map = new BMap.Map("container");

map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);

map.addControl(new BMap.NavigationControl());

可以向地图添加多个控件。在本例中我们向地图添加一个平移缩放控件、一个比例尺控件和一个缩略图控件。在地图中添加控件后,它们即刻生效。

1. map.addControl(new BMap.NavigationControl());   

2. map.addControl(new BMap.ScaleControl());   

3. map.addControl(new BMap.OverviewMapControl());  

map.addControl(new BMap.NavigationControl());

map.addControl(new BMap.ScaleControl());

map.addControl(new BMap.OverviewMapControl());

控制控件的位置 

初始化控件时,可提供一个可选参数,参数类型为一个JavaScript对象。其中anchoroffsetXoffsetY共同控制控件在地图上的位置。anchor表示控件停靠在地图的哪个角,允许的值为: 

· BMAP_ANCHOR_TOP_LEFT 

· BMAP_ANCHOR_TOP_RIGHT 

· BMAP_ANCHOR_BOTTOM_LEFT 

· BMAP_ANCHOR_BOTTOM_RIGHT 

除了指定停靠位置外,还可以提供偏移量,用来指示控件距离地图边界相隔多少像素。 

本示例将标准地图控件放置在地图的右上角,间隔10个像素。 

1. var opts = {anchor: BMAP_ANCHOR_TOP_RIGHT, offset: new BMap.Size(10, 10)}   

2. map.addControl(new BMap.NavigationControl(opts));  

var opts = {anchor: BMAP_ANCHOR_TOP_RIGHT, offset: new BMap.Size(10, 10)}

map.addControl(new BMap.NavigationControl(opts));

修改控件的配置

地图API的控件提供了丰富的配置参数,您可参考API文档来修改它们以便得到符合要求的控件外观。 

本示例将调整平移缩放地图控件的外观。 

1. var opts = {type: BMAP_NAVIGATION_CONTROL_SMALL}   

2. map.addControl(new BMap.NavigationControl(opts));  

var opts = {type: BMAP_NAVIGATION_CONTROL_SMALL}

map.addControl(new BMap.NavigationControl(opts));

自定义控件

百度地图API允许您通过继承BMap.Control来创建自定义地图控件。(注意JavaScript是通过prototype属性进行继承的) 

要创建可用的自定义控件,您需要实现类定义中的一个抽象方法并给两个属性赋值,它们是:initialize()defaultAnchordefaultOffsetinitialize()方法必须返回控件容器的DOM元素,defaultAnchor为控件默认的停靠位置,defaultOffset为控件默认的间隔距离。 

所有自定义的地图控件中的DOM元素最终都应该添加到地图容器(即地图所在的DOM元素)中去,这个地图容器可以通过BMap.Map.getContainer()方法获得。

在此示例中,创建一个简单的放大控件,每一次点击将地图放大两个级别。它具有文本标识,而不是平移缩放控件中使用的图形图标。

1. // 定义一个控件类,即function   

2. function ZoomControl(){   

3.   // 设置默认停靠位置和偏移量   

4.   this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;   

5.   this.defaultOffset = new BMap.Size(10, 10);   

6. }     

7. // 通过JavaScriptprototype属性继承于BMap.Control   

8. ZoomControl.prototype = new BMap.Control();     

9. // 自定义控件必须实现自己的initialize方法,并且将控件的DOM元素返回   

10. // 在本方法中创建个div元素作为控件的容器,并将其添加到地图容器中   

11. ZoomControl.prototype.initialize = function(map){   

12.   // 创建一个DOM元素   

13.   var div = document.createElement("div");   

14.   // 添加文字说明   

15.   div.appendChild(document.createTextNode("放大2"));   

16.   // 设置样式   

17.   div.style.cursor = "pointer";   

18.   div.style.border = "1px solid gray";   

19.   div.style.backgroundColor = "white";   

20.   // 绑定事件,点击一次放大两级   

21.   div.onclick = function(e){   

22.     map.zoomTo(map.getZoom() + 2);   

23.   }   

24.   // 添加DOM元素到地图中   

25.   map.getContainer().appendChild(div);   

26.   // DOM元素返回   

27.   return div;   

28. }     

29. // 创建控件   

你可能感兴趣的:(接口/api,api,百度地图,前端)