百度地圖JavaScript API 學習之自定義標註圖示(二)
阿新 • • 發佈:2019-02-10
地圖繪製之新增自定義標註圖示(二)
官方提供了兩種方法來自定義標註圖示:
- 通過引數
MarkerOptions
的icon
屬性進行設定 - 使用
Marker.setIcon()
方法。
第二種方法
即使用Marker.setIcon()
方法來建立自定義標註圖示。
(1)先使用Marker
類的建構函式Marker(point: Point, opts: MarkerOptions)
建立一個影象標註例項。
//建立了一個標註點(這裡用到了第二個引數MarkerOptions,可通過物件字面量形式表示。)
var marker = new BMap.Marker(point,{title:"標註提示語句" });//opts引數第一種方法用過了,這裡忽略就行了。
/*Icon類的建構函式的使用方法:
* Icon(url: String, size: Size, opts: IconOptions)
* 建構函式Icon()中有3個引數:String型別的圖片地址url;Size型別的圖片大小;和可選引數IconOptions。
* 第二個引數是Size型別的,基礎類Size以畫素表示一個矩形區域的大小。
* 注:可選引數IconOptions可以根據自己需要來決定要不要。(為了簡單起見,我們這裡先不用)
*/
var myIcon = new BMap.Icon('node_position.png' ,new BMap.Size(30,30));
具體用法看圖:(看不懂的可以參考程式碼中的註釋)
Icon
類的方法根據自己需要呼叫就行了,本案例沒有涉及到它的使用。
程式碼示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="initial-scale=1.0,user-scalable=no">
<title定義標註圖示方法1</title >
<style>
html,body,#allmap{
height: 100%;
width: 100%;
overflow:hidden;
margin:0;
font-family: "微軟雅黑";
}
</style>
<script src="http://api.map.baidu.com/api?v=2.0&ak=3ecea51f560650b1ed8a4b99808f52e8"></script>
</head>
<body>
<div id="allmap"></div>
<script>
/*實現方法:
(1)通過引數MarkerOptions的icon屬性進行設定;
(2)使用Marker.setIcon()方法
*/
var map = new BMap.Map("allmap");//建立一個地圖
var point = new BMap.Point(116.404, 39.915);//建立一個地理點座標
map.centerAndZoom(point,12);
//建構函式:IconMarker(point: Point, opts: MarkerOptions) 建立一個影象標註例項。
//MarkerOptions類表示Marker建構函式的可選引數。它沒有建構函式,但可通過物件字面量形式表示。
var mk = new BMap.Marker(point,{title:"標註提示語句"});//建立標註
/*Icon類表示標註覆蓋物所使用的圖示。
*建構函式:Icon(url: String, size: Size, opts: IconOptions) 以給定的影象地址和大小建立圖示物件例項
*屬性:
*anchor:Size 圖示的定位點相對於圖示左上角的偏移值。【此功能相當於定位中的left和top屬性】
*size:Size 圖示可視區域的大小。(圖示是作為span標籤的背景圖片新增上去的,開啟控制檯自行檢視)
*imageSize:Size 圖示所用的圖片的大小。此功能的作用等同於CSS中的background-size屬性。
*imageOffset:Size 圖示所用的圖片相對於可視區域的偏移值。【此做法與css sprites技術類似。】
* 此功能,相當於CSS中的background-position屬性。
*imageUrl:String 圖示所用影象資源的位置。
*/
/*IconOptions表示Icon建構函式的可選引數。它沒有建構函式,但可通過物件字面量形式表示。
*anchor:Size 圖示的定位錨點。是相對於圖示左上角的偏移值。預設等於圖示寬度和高度的中間值。【指定標註的位置】
*imageOffset:Size 圖片相對於可視區域的偏移值。【當您需要從一幅較大的圖片中擷取某部分作為標註圖示時使用】
*/
/*Size類以畫素表示一個矩形區域的大小。
*建構函式:Size(width: Number, height: Number) 以指定的寬度和高度建立一個矩形區域大小物件
*/
// var icon = new BMap.Icon('location.ico',new BMap.Size(32,32));
//var icon = new BMap.Icon('location.png',new BMap.Size(20,27));
/*設定的是span元素的大小,即圖片區域的大小,並非圖片本身的大小*/
//icon.imageSize = new BMap.Size(20,27);//設定span元素背景圖片的真實大小,即圖片本身的大小
//icon.anchor = new BMap.Size(10,20);//設定span元素的偏移,即整個圖片區域的偏移量,相當於設定left,top屬性
/*圖片路徑自己指定*/
var icon = new BMap.Icon('node_position.png',new BMap.Size(30,30));
icon.imageSize = new BMap.Size(30,30);
icon.anchor = new BMap.Size(15,25);
mk.setIcon(icon);
map.addOverlay(mk);//將標註新增到地圖中
</script>
</body>
</html>
效果圖
未設定該屬性時:icon.anchor = new BMap.Size(15,25);
設定該屬性後:icon.anchor = new BMap.Size(15,25);
設定該屬性時:icon.anchor = new BMap.Size(0,0);
設定該屬性時:icon.imageSize = new BMap.Size(20,20);
(此時,改變了圖片的真實大小)