不管是控件仍是插件,都是在一級API接口的基礎上,進行二次開發,封裝的一系列更加便於開發者使用,減小開發者工做量的二級API接口。除了官方通用的魚骨、鷹眼控件,還有大量官方開發的地圖插件,相似谷歌的lib。固然本文還會介紹自定義插件的使用。html
第一部分 控件數組
目前官方支持的控件包含:縮放控制條-地圖工具條(ToolBar)、縮略圖-鷹眼(OverView)、比例尺(Scale)。app
之因此把這三個控件放到一塊兒講,是由於他們的操做幾乎同樣,使用plugin添加控件,而後都有show和hide方法。dom
預覽圖:編輯器
一、 縮放控制條-地圖工具條(ToolBar)ide
工具條有不少效果,好比隱藏標尺,隱藏方向鍵盤,甚至還有HTML5定位。工具
添加魚骨:字體
mapObj.plugin(["AMap.ToolBar"],function(){ //在地圖中添加ToolBar插件 toolBar = new AMap.ToolBar(); mapObj.addControl(toolBar); });
移除魚骨:this
toolBar.hide();
完整魚骨:prototype
toolBar.show(); toolBar.showRuler(); toolBar.showDirection();
只有方向盤:
toolBar.show(); toolBar.showDirection(); toolBar.hideRuler();
只有長標尺:
toolBar.show(); toolBar.hideDirection(); toolBar.showRuler();
只有短標尺:
toolBar.show(); toolBar.hideRuler(); toolBar.hideDirection();
二、 縮略圖-鷹眼(OverView)
能夠設置鷹眼是否打開,是否顯示。顯示就是isOpen:true;
打開以下左圖open(),關閉狀以下右圖close()。
mapObj.plugin(["AMap.OverView"],function(){ //在地圖中添加鷹眼插件 //加載鷹眼 overView = new AMap.OverView({ visible:true //初始化顯示鷹眼 }); mapObj.addControl(overView); overView.open(); //展開鷹眼 });
三、 比例尺(Scale)
mapObj.plugin(["AMap.Scale"],function(){ //加載比例尺插件 scale = new AMap.Scale(); mapObj.addControl(scale); scale.show(); });
第二部分:插件
官方開發的插件有:圓編輯插件 (AMap.CircleEditor)、折線、多邊形編輯插件 (AMap.PolyEditor)、鼠標工具插件 (AMap.MouseTool)、距離量測插件 (AMap.RangingTool) 、地圖類型切換插件 (AMap.MapType)。
一、 圓編輯插件 (AMap.CircleEditor)
添加圓形
circle = new AMap.Circle({ //圓形編輯器的樣式 map: mapObj, center:new AMap.LngLat("116.40332221984863","39.90025505675715"), radius:1000, strokeColor: "#F33", strokeOpacity: 1, strokeWeight: 3, fillColor: "ee2200", fillOpacity: 0.35 });
打開編輯器
mapObj.plugin(["AMap.CircleEditor"],function(){ circleEditor = new AMap.CircleEditor(mapObj,circle); //建立圓形編輯器對象 circleEditor.open(); //打開圓形編輯器 });
關閉編輯器
circleEditor.close();
移除圓形
circle.hide();
圓形編輯器效果圖:
二、 折線、多邊形編輯插件 (AMap.PolyEditor)
添加多邊形
var arr=new Array();//經緯度座標數組 arr.push(new AMap.LngLat("116.403322","39.920255")); arr.push(new AMap.LngLat("116.410703","39.897555")); arr.push(new AMap.LngLat("116.402292","39.892353")); arr.push(new AMap.LngLat("116.389846","39.891365")); polygon=new AMap.Polygon({ path:arr, //設置多邊形輪廓的節點數組 strokeColor:"#0000ff", strokeOpacity:0.2, strokeWeight:3, fillColor: "#f5deb3", fillOpacity: 0.35 }); //地圖上添加多邊形 mapObj.addOverlays(polygon);
開啓多邊形編輯器
//構造多邊形編輯對象,並開啓多邊形的編輯狀態 mapObj.plugin(["AMap.PolyEditor"],function(){ polygonEditor = new AMap.PolyEditor(mapObj,polygon); polygonEditor.open(); });
關閉多邊形編輯器,並移除多邊形
polygonEditor.close(); polygon.hide();
多邊形編輯器效果圖:
三、 鼠標工具插件 (AMap.MouseTool)
鼠標工具備9種,就不一一舉栗子了。
添加鼠標工具
mapObj.plugin(["AMap.MouseTool"],function(){ //鼠標工具插件 mousetool = new AMap.MouseTool(mapObj); });
栗子1:鼠標打點工具
mousetool.marker(); //使用鼠標工具,在地圖上畫標記點
栗子2:鼠標測距工具
mousetool.measureArea();
栗子3:鼠標畫圓形
mousetool.circle();
栗子4:鼠標畫矩形
mousetool.rectangle();
……
……
……
以後的都不一一舉例了,你們查一下類參考,直接換個類名就行。
關閉鼠標工具
mousetool.close(true);
四、 距離量測插件 (AMap.RangingTool)
建立測距插件,而且先隱藏。
mapObj.plugin(["AMap.RangingTool"],function(){ ruler = new AMap.RangingTool(mapObj); AMap.event.addListener(ruler,"end",function(e){ ruler.turnOff(); }); });
打開並顯示測距工具
ruler.turnOn();
隱藏測距工具
ruler.turnOff(); mapObj.clearMap();
預覽效果
五、 地圖類型切換插件 (AMap.MapType)
mapObj.plugin(["AMap.MapType"],function(){ //添加地圖類型切換插件 //地圖類型切換 mapType= new AMap.MapType({defaultType:2,showRoad:true}); mapObj.addControl(mapType); });
效果圖預覽
第三部分:自定義插件
首先定義一個命名空間
//定義一個插件類 homeControlDiv,AMap爲命名空間 AMap.homeControlDiv=function(){ }
而後往裏面填充你的內容,包括功能、事件
AMap.homeControlDiv.prototype = { addTo: function(map, dom){ dom.appendChild(this._getHtmlDom(map)); }, _getHtmlDom:function(map){ this.map=map; // 建立一個能承載控件的<div>容器 var controlUI=document.createElement("DIV"); controlUI.style.width='80px'; //設置控件容器的寬度 controlUI.style.height='20px'; //設置控件容器的高度 controlUI.style.backgroundColor='white'; controlUI.style.borderStyle='solid'; controlUI.style.borderWidth='2px'; controlUI.style.cursor='pointer'; controlUI.style.textAlign='center'; // 設置控件的位置 controlUI.style.position='absolute'; controlUI.style.left='120px'; //設置控件離地圖的左邊界的偏移量 controlUI.style.top='5px'; //設置控件離地圖上邊界的偏移量 controlUI.style.zIndex='300'; //設置控件在地圖上顯示 // 設置控件字體樣式 controlUI.style.fontFamily='Arial,sens-serif'; controlUI.style.fontSize='12px'; controlUI.style.paddingLeft='4px'; controlUI.style.paddingRight='4px'; controlUI.innerHTML="返回中心"; // 設置控件響應點擊onclick事件 controlUI.onclick = function(){ map.setCenter(new AMap.LngLat(116.404, 39.915)); } return controlUI; } }
最後將這個控件添加到地圖上:
var homeControl=new AMap.homeControlDiv(mapObj); //新建自定義插件對象 mapObj.addControl(homeControl); //地圖上添加插件 隱藏這個自定義控件:(直接對控件整個div進行隱藏) controlUI.style.display='none';
第四部分:效果展現