1. 程式人生 > >百度地圖JavaScript API 學習之自定義標註圖示(二)

百度地圖JavaScript API 學習之自定義標註圖示(二)

地圖繪製之新增自定義標註圖示(二)

官方提供了兩種方法來自定義標註圖示:

  • 通過引數MarkerOptionsicon屬性進行設定
  • 使用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);(此時,改變了圖片的真實大小)

這裡寫圖片描述