比例尺、縮略圖、平移縮放之百度地圖添加控件方法
下面通過(guò)圖文并茂的方式給大家詳細(xì)介紹下比例尺、縮略圖、平移縮放之百度地圖添加控件方法。
地圖控件概述
百度地圖上負(fù)責(zé)與地圖交互的UI元素稱為控件。百度地圖API中提供了豐富的控件,您還可以通過(guò)Control類來(lái)實(shí)現(xiàn)自定義控件。
地圖API中提供的控件有:
Control:控件的抽象基類,所有控件均繼承此類的方法、屬性。通過(guò)此類您可實(shí)現(xiàn)自定義控件。
NavigationControl:地圖平移縮放控件,PC端默認(rèn)位于地圖左上方,它包含控制地圖的平移和縮放的功能。移動(dòng)端提供縮放控件,默認(rèn)位于地圖右下方。
OverviewMapControl:縮略地圖控件,默認(rèn)位于地圖右下方,是一個(gè)可折疊的縮略地圖。
ScaleControl:比例尺控件,默認(rèn)位于地圖左下方,顯示地圖的比例關(guān)系。
MapTypeControl:地圖類型控件,默認(rèn)位于地圖右上方。
CopyrightControl:版權(quán)控件,默認(rèn)位于地圖左下方。
GeolocationControl:定位控件,針對(duì)移動(dòng)端開(kāi)發(fā),默認(rèn)位于地圖左下方
向地圖添加控件
可以使用Map.addControl()方法向地圖添加控件。在此之前地圖需要進(jìn)行初始化。例如,要將標(biāo)準(zhǔn)地圖控件添加到地圖中,可在代碼中添加如下內(nèi)容:
var map = new BMap.Map("container");
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);
map.addControl(new BMap.NavigationControl());
可以向地圖添加多個(gè)控件。在本例中我們向地圖添加一個(gè)平移縮放控件、一個(gè)比例尺控件和一個(gè)縮略圖控件。在地圖中添加控件后,它們即刻生效。
map.addControl(new BMap.NavigationControl());
map.addControl(new BMap.ScaleControl());
map.addControl(new BMap.OverviewMapControl());
map.addControl(new BMap.MapTypeControl());
map.setCurrentCity("北京"); // 僅當(dāng)設(shè)置城市信息時(shí),MapTypeControl的切換功能才能可用
控制控件位置
初始化控件時(shí),可提供一個(gè)可選參數(shù),其中的anchor和offset屬性共同控制控件在地圖上的位置。
控件??课恢?anchor表示控件的??课恢?,即控件??吭诘貓D的哪個(gè)角。當(dāng)?shù)貓D尺寸發(fā)生變化時(shí),控件會(huì)根據(jù)??课恢玫牟煌瑏?lái)調(diào)整自己的位置。anchor允許的值為:
BMAP_ANCHOR_TOP_LEFT 表示控件定位于地圖的左上角。
BMAP_ANCHOR_TOP_RIGHT 表示控件定位于地圖的右上角。
BMAP_ANCHOR_BOTTOM_LEFT 表示控件定位于地圖的左下角。
BMAP_ANCHOR_BOTTOM_RIGHT 表示控件定位于地圖的右下角。

控件位置偏移
除了指定??课恢猛猓€可以通過(guò)偏移量來(lái)指示控件距離地圖邊界有多少像素。如果兩個(gè)控件的停靠位置相同,那么控件可能會(huì)重疊在一起,這時(shí)就可以通過(guò)偏移值使二者分開(kāi)顯示。
本示例將比例尺放置在地圖的左下角,由于API默認(rèn)會(huì)有版權(quán)信息,因此需要添加一些偏移值以防止控件重疊。
var opts = {offset: new BMap.Size(150, 5)}
map.addControl(new BMap.ScaleControl(opts));
修改控件配置
地圖API的控件提供了豐富的配置參數(shù),您可參考API文檔來(lái)修改它們以便得到符合要求的控件外觀。例如,NavigationControl控件就提供了如下類型:
BMAP_NAVIGATION_CONTROL_LARGE 表示顯示完整的平移縮放控件。
BMAP_NAVIGATION_CONTROL_SMALL 表示顯示小型的平移縮放控件。
BMAP_NAVIGATION_CONTROL_PAN 表示只顯示控件的平移部分功能。
BMAP_NAVIGATION_CONTROL_ZOOM 表示只顯示控件的縮放部分功能。
下圖從左向右依次展示了上述不同類型的控件外觀:

上圖前4個(gè)為PC端平移縮放控件樣式,最后一個(gè)為移動(dòng)端縮放控件樣式。
下面的示例將調(diào)整平移縮放地圖控件的外觀。
上圖前4個(gè)為PC端平移縮放控件樣式,最后一個(gè)為移動(dòng)端縮放控件樣式。
下面的示例將調(diào)整平移縮放地圖控件的外觀。
添加縮略圖
<!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>點(diǎn)擊地圖類型控件切換普通地圖、衛(wèi)星圖、三維圖、混合圖(衛(wèi)星圖+路網(wǎng)),右下角是縮略圖,點(diǎn)擊按鈕查看效果</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圖,衛(wèi)星圖
map.addControl(mapType2); //左上角,默認(rèn)地圖控件
map.setCurrentCity("北京"); //由于有3D圖,需要設(shè)置城市哦
map.addControl(overView); //添加默認(rèn)縮略地圖控件
map.addControl(overViewOpen); //右下角,打開(kāi)
}
//移除地圖類型和縮略圖
function delete_control(){
map.removeControl(mapType1); //移除2D圖,衛(wèi)星圖
map.removeControl(mapType2);
map.removeControl(overView);
map.removeControl(overViewOpen);
}
</script>
效果圖

以上就是本文的全部?jī)?nèi)容,希望大家喜歡。
相關(guān)文章
JavaScript高級(jí)程序設(shè)計(jì) 閱讀筆記(十七) js事件
IE中是冒泡型事件,即從最特定的事件目標(biāo)到最不特定的事件目標(biāo)2012-08-08
JavaScript涉及二進(jìn)制的轉(zhuǎn)換方式
這篇文章主要介紹了JavaScript涉及二進(jìn)制的轉(zhuǎn)換方式,具有很好的 參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
前端點(diǎn)擊預(yù)覽圖片Viewer.js使用方法(簡(jiǎn)單的操作)
這篇文章主要介紹了前端點(diǎn)擊預(yù)覽圖片Viewer.js使用的相關(guān)資料,Viewer.js是一款強(qiáng)大的圖片查看器,支持移動(dòng)設(shè)備觸摸事件、響應(yīng)式、放大/縮小、旋轉(zhuǎn)、翻轉(zhuǎn)、移動(dòng)、鍵盤操作、全屏幻燈片模式、縮略圖和標(biāo)題顯示等功能,需要的朋友可以參考下2025-01-01
Javascript實(shí)現(xiàn)的StopWatch功能示例
這篇文章主要介紹了Javascript實(shí)現(xiàn)的StopWatch功能,結(jié)合具體實(shí)例形式分析了javascript自定義StopWatch實(shí)現(xiàn)測(cè)試運(yùn)行時(shí)間功能的相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
用JavaScript實(shí)現(xiàn)UrlEncode和UrlDecode的腳本代碼
用js自定義函數(shù)寫的實(shí)現(xiàn)url加密解密的實(shí)現(xiàn)代碼,需要的朋友可以參考下2008-07-07
小程序自定義導(dǎo)航欄兼容適配所有機(jī)型(附完整案例)
這篇文章主要介紹了小程序自定義導(dǎo)航欄兼容適配所有機(jī)型(附完整案例),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

