【高德地圖API】從零開始學高德JS API(二)地圖控件與插件

不管是控件仍是插件,都是在一級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';

第四部分:效果展現

http://zhaoziang.com/amap/zero_2_1.html

【原文地址】:http://www.cnblogs.com/milkmap/p/3707711.html

相關文章
相關標籤/搜索