百度地圖之添加控件——比例尺、縮略圖、平移縮放

地圖控件概述

  百度地圖上負責與地圖交互的UI元素稱爲控件。百度地圖API中提供了豐富的控件,您還能夠經過Control類來實現自定義控件。javascript

  地圖API中提供的控件有:css

    • Control:控件的抽象基類,全部控件均繼承此類的方法、屬性。經過此類您可實現自定義控件。
    • NavigationControl:地圖平移縮放控件,PC端默認位於地圖左上方,它包含控制地圖的平移和縮放的功能。移動端提供縮放控件,默認位於地圖右下方。
    • OverviewMapControl:縮略地圖控件,默認位於地圖右下方,是一個可摺疊的縮略地圖。
    • ScaleControl:比例尺控件,默認位於地圖左下方,顯示地圖的比例關係。
    • MapTypeControl:地圖類型控件,默認位於地圖右上方。
    • CopyrightControl:版權控件,默認位於地圖左下方。
    • GeolocationControl:定位控件,針對移動端開發,默認位於地圖左下方

向地圖添加控件

  可使用Map.addControl()方法向地圖添加控件在此以前地圖須要進行初始化。例如,要將標準地圖控件添加到地圖中,可在代碼中添加以下內容:html

var map = new BMap.Map("container");    
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);    
map.addControl(new BMap.NavigationControl());

 

  能夠向地圖添加多個控件。在本例中咱們向地圖添加一個平移縮放控件、一個比例尺控件和一個縮略圖控件。在地圖中添加控件後,它們即刻生效。java

map.addControl(new BMap.NavigationControl());    
map.addControl(new BMap.ScaleControl());    
map.addControl(new BMap.OverviewMapControl());    
map.addControl(new BMap.MapTypeControl());    
map.setCurrentCity("北京"); // 僅當設置城市信息時,MapTypeControl的切換功能才能可用

 

 

控制控件位置

  初始化控件時,可提供一個可選參數,其中的anchor和offset屬性共同控制控件在地圖上的位置。api

  控件停靠位置 anchor表示控件的停靠位置,即控件停靠在地圖的哪一個角。當地圖尺寸發生變化時,控件會根據停靠位置的不一樣來調整本身的位置。anchor容許的值爲:ui

  • BMAP_ANCHOR_TOP_LEFT 表示控件定位於地圖的左上角
  • BMAP_ANCHOR_TOP_RIGHT 表示控件定位於地圖的右上角
  • BMAP_ANCHOR_BOTTOM_LEFT 表示控件定位於地圖的左下角
  • BMAP_ANCHOR_BOTTOM_RIGHT 表示控件定位於地圖的右下角。 

 

控件位置偏移spa

  除了指定停靠位置外,還能夠經過偏移量來指示控件距離地圖邊界有多少像素。若是兩個控件的停靠位置相同,那麼控件可能會重疊在一塊兒,這時就能夠經過偏移值使兩者分開顯示。scala

  本示例將比例尺放置在地圖的左下角,因爲API默認會有版權信息,所以須要添加一些偏移值以防止控件重疊。 code

var opts = {offset: new BMap.Size(150, 5)}    
map.addControl(new BMap.ScaleControl(opts));

 

 

修改控件配置

  地圖API的控件提供了豐富的配置參數,您可參考API文檔來修改它們以便獲得符合要求的控件外觀。例如,NavigationControl控件就提供了以下類型:htm

  • BMAP_NAVIGATION_CONTROL_LARGE 表示顯示完整的平移縮放控件
  • BMAP_NAVIGATION_CONTROL_SMALL 表示顯示小型的平移縮放控件
  • BMAP_NAVIGATION_CONTROL_PAN 表示只顯示控件的平移部分功能
  • BMAP_NAVIGATION_CONTROL_ZOOM 表示只顯示控件的縮放部分功能

下圖從左向右依次展現了上述不一樣類型的控件外觀: 

  上圖前4個爲PC端平移縮放控件樣式,最後一個爲移動端縮放控件樣式。

  下面的示例將調整平移縮放地圖控件的外觀。 

上圖前4個爲PC端平移縮放控件樣式,最後一個爲移動端縮放控件樣式。

下面的示例將調整平移縮放地圖控件的外觀。 

 

 

添加縮略圖

<!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" />
    <style type="text/css">
        body, html {width: 100%;height: 100%;margin:0;font-family:"微軟雅黑";}
        #allmap{width:100%;height:500px;}
        #r-result{width:100%;margin-top:5px;}
        p{margin:5px; font-size:14px;}
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密鑰"></script>
    <title>添加/刪除地圖類型、縮略圖控件</title>
</head>
<body>
    <div id="allmap"></div>
    <div id="r-result">
        <input type="button" onclick="add_control();" value="添加" />
        <input type="button" onclick="delete_control();" value="刪除" />
    </div>
    <p>點擊地圖類型控件切換普通地圖、衛星圖、三維圖、混合圖(衛星圖+路網),右下角是縮略圖,點擊按鈕查看效果</p>
</body>
</html>
<script type="text/javascript">
    // 百度地圖API功能
    var map = new BMap.Map("allmap");
    map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);

    var mapType1 = new BMap.MapTypeControl({mapTypes: [BMAP_NORMAL_MAP,BMAP_HYBRID_MAP]});
    var mapType2 = new BMap.MapTypeControl({anchor: BMAP_ANCHOR_TOP_LEFT});

    var overView = new BMap.OverviewMapControl();
    var overViewOpen = new BMap.OverviewMapControl({isOpen:true, anchor: BMAP_ANCHOR_BOTTOM_RIGHT});
    //添加地圖類型和縮略圖
    function add_control(){
        map.addControl(mapType1);          //2D圖,衛星圖
        map.addControl(mapType2);          //左上角,默認地圖控件
        map.setCurrentCity("北京");        //因爲有3D圖,須要設置城市哦
        map.addControl(overView);          //添加默認縮略地圖控件
        map.addControl(overViewOpen);      //右下角,打開
    }
    //移除地圖類型和縮略圖
    function delete_control(){
        map.removeControl(mapType1);   //移除2D圖,衛星圖
        map.removeControl(mapType2);
        map.removeControl(overView);
        map.removeControl(overViewOpen);
    }
</script>

 

 

效果圖

 

  致謝:感謝您的耐心閱讀!

相關文章
相關標籤/搜索