为了账号安全,请及时绑定邮箱和手机立即绑定

百度地图调用笔记:javascript版本

标签:
JavaScript

<script type="text/javascript" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="http://api.map.baidu.com/api?v=2.0&ak=密钥"></script>
2.提供一个容器,这个容器一般利用div提供,然后需要注意的是这个div里面最好不要放东西,然后提供一个id。
<div id="map"></div>
注意,需要设置高度
3.在底部调用javascript代码,规律可循:
1.需要申明容器对象,利用百度地图提供的BMap类的Map方法,
var mp=new BMap.Map("传入你刚才提供的容器的id");
2.设置中点位置,也就是说地图展示的时候那个地区为中心,比如如果你传入的是北京,或者经纬度,那么就以那个经纬度为周期。
mp.centerAndZoom (arg1,arg2);
其中两个参数分别为:
arg1:表示位置,可以是一个点,利用百度提供的BMap.Point(地理经度,地理纬度);进行定位,或者直接使用地址进行定位。
arg2:表示定位的等级,范围为3-19级,不过注意,这个级别只适用于第一个参数是一个点的时候,并且这个时候这个参数必须要存在的。如果第一个参数是字符串,也就是比如传入的是北京,那么这个时候这个参数就可以忽略不计,因为这个时候地图会根据传入的参数自适应的缩放,如果是高清底图,就是移动端(Android或者IOS)的时候,等级范围为3-18级。
然后初始化地图。操作了以上步骤基本上就可以把地图显示出来了,但这仅仅只是个基础。接下来我们可以做一些操作。

1.首先我们可以为地图添加一些控件,比如定位的控件,比如缩放的控件,又比如地图切换,就是切换成3d还是平面或者卫星图的控件。我们可以用下面的方法进行切换:
mp.addControl(control:Control);
注意,这里没有返回值。而且一个控件实例只能向地图添加一次。
下面我会介绍有什么控件和用法:

一.控件类:
1.Control:此类就是所有控件的父母,也就是所有控件的基类,既然是基类,肯定会提供一些比较常用而且比较有用的属性:
defaultAnchor:默认停靠位置,自定义控件的时候需要设置
defaultOffset:默认偏移位置,自定义控件的时候需要设置
方法:
setAnchor(anchor:enum ControlAnchor):设置控件停靠位置
getAnchor():返回控件停靠位置(enum ControlAnchor)
setOffset(offset:Size):设置控件停靠的偏移量
getOffset():返回控件停靠的偏移量(size)
show():显示控件
hide():隐藏控件
isVisible():判断控件的可见性(Boolean)
initialize(map:Map):抽象方法。调用Map.addControl()方法添加控件时将调用此方法,从而实现该控件的初始化。自定义控件时需要实现此方法,并将元素的DOM元素在该方法中返回。DOM元素需要添加到地图的容器中,使用map.getContainer()方法可获得地图容器元素。(HTMLElement)
通常来说,一般会在自己创建控件的时候使用,一般情况如果只是用百度地图提供的方法的话只要了解就足够了,如果想自己鼓捣一些控件的话,就需要自己去重写咯。

这里需要先介绍点比较常用的控件工具类,我之所以先介绍这些,是因为后面设置的时候会比较方便,比如:ControlAnchor类,
Size类等等。

    下面是基础类的介绍:

    1.Point类:地理坐标点类,该类在初始化的时候就用到了,

        构造方法:
            Point(lng:Number, lat:Number):以指定的经度和纬度创建一个地理点坐标。
            lng:表示地理经度
            lat:表示地理纬度

        方法:
            equals(other:Point)判断两个地点是否相等,当且仅当lng和lat相等时候返回true;

    2.Pixel类:此类表示地图上的一个点,单位为像素。

        构造函数:
            Pixel(x:Number, y:Number):创建像素点对象实例。像素坐标的坐标原点为地图区域的左上角。
            x:表示x坐标
            y:表示y坐标

        方法:
            equals(other:Pixel):判断坐标点是否相等,当且仅当两点的x坐标和y坐标均相等时返回true。

    3.Bounds类:此类表示地理坐标的矩形区域。

        构造方法:
            Bounds(sw:Point, ne:Point):创建一个包含所有给定点坐标的矩形区域。其中sw表示矩形区域的西南角,参数ne表示矩形区域的东北角。

        方法:
            equals(other:Bounds):当且仅当此矩形中的两点参数都等于其他矩形的两点参数时,返回true。(Boolean)

            containsPoint(point:Point):如果点的地理坐标位于此矩形内,则返回true。(Boolean)

            containsBounds(bounds:Bounds):传入的矩形区域完全包含于此矩形区域中,则返回true。(Boolean)

            intersects(other:Bounds):计算与另一矩形的交集区域。(Bounds)

            extend(point:Point):放大此矩形,使其包含给定的点。(none)

            getCenter():返回矩形的中心点。(Point)

            isEmpty():如果矩形为空,则返回true。(Boolean)

            getSouthWest():返回矩形区域的西南角。(Point)

            getNorthEast():返回矩形区域的东北角。(Point)

            toSpan():返回矩形区域的跨度。(Point)

    4.Size类:此类以像素表示一个矩形区域的大小。

        构造方法:
            Size(width:Number, height:Number):以指定的宽度和高度创建一个矩形区域大小对象。
            width:水平方向数值
            height:竖直方向的数值

        方法:
            equals(other:Size):当且仅当此矩形中的宽度和高度都等于其他矩形的宽度和高度时,返回true。

    控制类基础类:

    1.ControlAnchor:此常量表示控件的定位。可以直接用。
        BMAP_ANCHOR_TOP_LEFT:控件将定位到地图的左上角。
        BMAP_ANCHOR_TOP_RIGHT:控件将定位到地图的右上角。
        BMAP_ANCHOR_BOTTOM_LEFT:控件将定位到地图的左下角。
        BMAP_ANCHOR_BOTTOM_RIGHT:控件将定位到地图的右下角。

    2.LengthUnit:常量表示长度单位制。
        BMAP_UNIT_METRIC:公制单位。
        BMAP_UNIT_IMPERIAL:英制单位。

    3.StatusCode:常量用于描述对象当前状态。
        BMAP_STATUS_PERMISSION_DENIED:没有权限。对应数值“6”。(自 1.1 新增)
        BMAP_STATUS_SERVICE_UNAVAILABLE:服务不可用。对应数值“7”。(自 1.1 新增)
        BMAP_STATUS_TIMEOUT:超时。对应数值“8”。(自 1.1 新增)

2.NavigationControl:就是地图的平移缩放控件,就是那种尺子一样的可以拉伸放大的。
    构造方法:
    NavigationControl([type:NavigationControlOptions])
    构造函数中可以传一个配置数组,下面有个配置类NavigationControlOptions介绍了他具有的配置

    方法:
    getType():返回平移缩放控件的类型。(enum NavigationControlType)
    setType(type:enum NavigationControlType):设置平移缩放控件的类型。

    配置选项:
    NavigationControlOptions:平移缩放控件配置类,其中有五个属性可用:
    anchor:控件的停靠位置。(enum ControlAnchor)
    offset:控件的水平偏移值。(Size)
    type:平移缩放控件的类型。(enum NavigationControlType)
    showZoomInfo:是否显示级别提示信息。(自 1.1 新增)(Boolean)
    enableGeolocation:控件是否集成定位功能,默认为false。(自 2.0 新增)(Boolean)

    type选项:
    NavigationControlType类:此常量表示平移缩放控件的类型
        BMAP_NAVIGATION_CONTROL_LARGE:标准的平移缩放控件(包括平移、缩放按钮和滑块)
        BMAP_NAVIGATION_CONTROL_SMALL:仅包含平移和缩放按钮。
        BMAP_NAVIGATION_CONTROL_PAN:仅包含平移按钮。
        BMAP_NAVIGATION_CONTROL_ZOOM:仅包含缩放按钮。

使用方法:

    var opts={
        anchor:BMAP_ANCHOR_BOTTOM_RIGHT,
        offset:new BMap.Size(10,150),
        type:BMAP_NAVIGATION_CONTROL_LARGE,
        showZoomInfo:true,
        enableGeolocation:true
    };
    mp.addControl(new BMap.NavigationControl(opts));

3.GeolocationControl类:此类是负责进行地图定位的控件,使用html5浏览器定位功能,此类继承Control所有功能。(自 1.4 新增)。

    构造函数:
    GeolocationControl([type:GeolocationControlOptions]):创建一个特定样式的地图定位控件。

    方法:
    location():开始进行定位。
    getAddressComponent():返回当前的定位信息。若当前还未定位,则返回null。(AddressComponent)

    事件:
    locationSuccess:定位成功后触发此事件。({point, AddressComponent})
    locationError:定位失败后触发此事件。({StatusCode})

    配置选项:
    GeolocationControlOptions表示的是选项信息类:
    anchor:控件的停靠位置,默认定位到地图的右下角。(enum ControlAnchor)
    offset:控件的水平偏移值。(Size)
    showAddressBar:是否显示定位信息面板。默认显示定位信息面板。(Boolean)
    enableAutoLocation:添加控件时是否进行定位。默认添加控件时不进行定位。(Boolean)
    locationIcon:可自定义定位中心点的Icon样式。(Icon)
    注意,Icon类是在覆盖物里面有介绍,这里就先不介绍了。后面括号代表的是类型,方法的话代表的是返回类型,下同。

    使用方法:
        var opts2={
            anchor:BMAP_ANCHOR_TOP_LEFT,
            offset:new BMap.Size(10,400),
            showAddressBar:false,
            enableGeolocation:false,
            locationIcon:暂时不尝试
        }
        var geo=new BMap.GeolocationControl(opts2);
        mp.addControl(geo);

4.OverviewMapControl:此类表示缩略地图控件。

    构造函数:
        OverviewMapControl([opts:OverviewMapControlOptions]):创建一个缩略地图控件实例。

    方法:
        changeView():切换缩略地图控件的开合状态。(none)
        setSize(size:Size):设置缩略地图的大小。(none)
        getSize():返回缩略地图的大小。(Size)

    事件:
        viewchanged:缩略地图开合状态发生变化后触发此事件。(event{type, target, isOpen})
        viewchanging:缩略地图开合状态发生变化过程中触发此事件。(event{type, target})

    配置信息:
        OverviewMapControlOptions配置信息:
            anchor:控件的停靠位置。(enum ControlAnchor)
            offset:控件的偏移值。(Size)
            size:缩略地图控件的大小。(Size)
            isOpen:缩略地图添加到地图后的开合状态,默认为关闭。(Boolean)

    使用方法:
        var opts3={
            anchor:BMAP_ANCHOR_TOP_LEFT,
            offset:new BMap.Size(10,10),
            isOpen:true,
            size:new BMap.Size(400,200)
        }
        var over=new BMap.OverviewMapControl(opts3);
        mp.addControl(over);

5.ScaleControl类:此类表示比例尺控件。
    构造函数:
        ScaleControl([opts:ScaleControlOptions]):创建一个比例尺控件。

    方法:
        getUnit():返回比例尺单位制。(enum LengthUnit)
        setUnit(unit:enum LengthUnit):设置比例尺单位制。(none)

    配置信息:
        ScaleControlOptions配置信息:
        anchor:控件的停靠位置
        offset:控件的偏移值

    使用方法:
        var opts4={
            anchor:BMAP_ANCHOR_TOP_RIGHT,
            offset:new BMap.Size(10,10),
        }
        var scale=new BMap.ScaleControl(opts4);
        mp.addControl(scale);

6.CopyrightControl类:此类表示版权控件,您可以在地图上添加自己的版权信息。每一个版权信息需要包含如下内容:版权的唯一标识、版权内容和其适用的区域范围。

    构造方法:
        CopyrightControl([opts:CopyrightControlOptions]):创建一个版权控件实例。

    方法:
        addCopyright(copyright:Copyright):添加版权信息。
        removeCopyright(id):移除版权信息。
        getCopyright(id):返回单个版权信息。(Copyright)
        getCopyrightCollection():返回版权信息列表。(Array<Copyright>)

    配置信息:
        CopyrightControlOptions配置信息:
            anchor:控件的停靠位置。
            offset:控件的偏移值。

        Copyright:此类表示一条版权信息。可作为CopyrightControl.addCopyright()方法的参数。它没有构造函数,但可通过对象字面量形式表示。
            id:该版权信息的唯一标识符(Number)
            content:该版权的文本信息,用于显示在地图上,支持HTML内容。(String)
            bounds:该版权信息所适用的地理区域。(Bounds)

    使用方法:
        var opts5={
            anchor:BMAP_ANCHOR_TOP_RIGHT,
            offset:new BMap.Size(10,10),
        }
        var copy=new BMap.CopyrightControl(opts5);
        var cr=new BMap.Copyright();
        cr.id=000221012201;
        cr.content="测试的版权信息";
        var b=new BMap.Bounds(new BMap.Point(1,1),new  BMap.Point(150,150));
        cr.bounds=b;
        copy.addCopyright(cr);
        mp.addControl(copy);
        var cr1=copy.getCopyright(000221012201);
        alert(cr1.id+"-->"+cr1.content+"-->")

7.MapTypeControl类:负责切换地图类型的控件,此类继承Control所有功能。

    构造方法:
        MapTypeControl([opts:MapTypeControlOptions]):创建地图类型控件。(自 1.1 新增)

    配置信息:
        MapTypeControlOptions:通过对象字面量形式表示(自 1.2 新增)。
            type:控件样式。(MapTypeControlType)
            mapTypes:控件展示的地图类型,默认为普通图、卫星图、卫星加路网混合图和三维图。通过此属性可配置控件展示的地图类型。(Array<MapType>)

        MapTypeControlType常量:
            BMAP_MAPTYPE_CONTROL_HORIZONTAL:按钮水平方式展示,默认采用此类型展示。
            BMAP_MAPTYPE_CONTROL_DROPDOWN:按钮呈下拉列表方式展示。
            BMAP_MAPTYPE_CONTROL_MAP:以图片方式展示类型控件,设置该类型后无法指定maptypes属性。

    使用方法:
        var opts6={
            type:BMAP_MAPTYPE_CONTROL_MAP
        }
        var maptype=new BMap.MapTypeControl(opts6);
        mp.addControl(maptype);

8.PanoramaControl类:负责切换至全景地图的控件,此类继承Control所有功能。(自2.0新增)

    构造方法:
        PanoramaControl():创建全景控件实例。

    使用方法:
        mp.addControl(new BMap.PanoramaControl());

9.下面是比较高级的用法,就是自定义控件类,其实一般够用了,如果实在不够的话,可以看下面的例子,转自官方文档:
    步骤:
    1.定义一个自定义控件的构造函数。 
    2.设置自定义控件构造函数的prototype属性为Control的实例,以便继承控件基类。 
    3.实现initialize()方法并提供defaultAnchor和defaultOffset属性。

    // 定义一个控件类,即function    
    function ZoomControl(){    
        // 设置默认停靠位置和偏移量  
        this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;    
        this.defaultOffset = new BMap.Size(10, 10);    
    }    
    // 通过JavaScript的prototype属性继承于BMap.Control   
    ZoomControl.prototype = new BMap.Control();
    初始化自定义控件
    当调用map.addControl()方法添加自定义控件时,API会调用该对象的initialize()方法用来初始化控件,您需要实现此方法并在其中创建控件所需的DOM元素,并添加DOM事件。所有自定义控件中的DOM元素最终都应该添加到地图容器(即地图所在的DOM元素)中去,地图容器可以通过map.getContainer()方法获得。最后initialize()方法需要返回控件容器的DOM元素。
    // 自定义控件必须实现initialize方法,并且将控件的DOM元素返回   
    // 在本方法中创建个div元素作为控件的容器,并将其添加到地图容器中   
    ZoomControl.prototype.initialize = function(map){    
    // 创建一个DOM元素   
     var div = document.createElement("div");    
    // 添加文字说明    
     div.appendChild(document.createTextNode("放大2级"));    
     // 设置样式    
     div.style.cursor = "pointer";    
     div.style.border = "1px solid gray";    
     div.style.backgroundColor = "white";    
     // 绑定事件,点击一次放大两级    
     div.onclick = function(e){  
      map.zoomTo(map.getZoom() + 2);    
     }    
     // 添加DOM元素到地图中   
     map.getContainer().appendChild(div);    
     // 将DOM元素返回  
     return div;    
     }
    添加自定义控件
    添加自定义控件与添加其他控件方法一致,调用map.addControl()方法即可。
    // 创建控件实例    
    var myZoomCtrl = new ZoomControl();
    // 添加到地图当中 map.addControl(myZoomCtrl);

10.基础类Map中对于控件类的操作:

    addControl(control:Control):将控件添加到地图,一个控件实例只能向地图中添加一次。(none)

    removeControl(control:Control):从地图中移除控件。如果控件从未被添加到地图中,则该移除不起任何作用。(none)

    getContainer():返回地图的容器元素。当创建用户自定义控件时,需要自行实现Control.initialize()方法,并将控件的容器元素添加到地图上,通过此方法可获得地图容器。(HTMLElement)

请看下一篇,如果喜欢,请点赞哈,谢谢!

点击查看更多内容
23人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
33
获赞与收藏
1498

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消