百度地圖API


  百度地圖API

    百度地圖API當然在官方文檔學習更加清晰,我只是做一下我這2天研究一個總結。

    首先,應該在上面的鏈接申請一個你的密鑰。

    接着,顯示百度地圖,先上代碼再解釋:

   

 1 <!DOCTYPE html>  
 2 <html>  
 3 <head>  
 4 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />  
 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
 6 <title>Hello, World</title>  
 7 <style type="text/css">  
 8 html{height:100%}  
 9 body{height:100%;margin:0px;padding:0px}  
10 #container{height:100%}  
11 </style>  
12 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=vjxRk3m3YYQ4uglexlrOxEVwGc2Nw6kF">
13 //v2.0版本的引用方式:src="http://api.map.baidu.com/api?v=2.0&ak=您的密鑰"
14 //v1.4版本及以前版本的引用方式:src="http://api.map.baidu.com/api?v=1.4&key=您的密鑰&callback=initialize"
15 </script>
16 </head>  
17  
18 <body>  
19 <div id="container"></div> 
20 <script type="text/javascript"> 
21 var map = new BMap.Map("container");          // 創建地圖實例  
22 var point = new BMap.Point(116.401,41.915);  // 創建點坐標  
23 map.centerAndZoom(point, 15);                 // 初始化地圖,設置中心點坐標和地圖級別
26 </script>  
27 </body>  
28 </html> 

 

 var map=new BMap.Map('container');

     創建地圖實例

     這里通過new 創建一個地圖實例,其中參數可以是id也可以是元素對象,用於在頁面上展現地圖,所以給html元素設置了下面的樣式,使得地圖充滿 整個瀏覽器窗口.

<style type="text/css">  
html{height:100%}  
body{height:100%;margin:0px;padding:0px}  
#container{height:100%}  
</style> 

 

 

 

var point=new BMap.Point(116.404,39.915);

我們通過BMap命名空間下的的Point類創建一個坐標點。116.404表示經度,39.915表示緯度。

 

 

map.centerAndZoom(point,15);

 對地圖進行初始化,BMap.Map.centerAndZoom()方法要求2個參數,一個中心點,一個是地圖的級別。只有進行了初始化以后才會有接下來對地圖的操作。

 

 添加控件

//控件參數設置 size type
var opts={offset:new BMap.Size(400,400),type: BMAP_NAVIGATION_CONTROL_ZOOM}
//添加控件
map.addControl(new BMap.NavigationControl(opts)); //地圖平移縮放控件
map.addControl(new BMap.OverviewMapControl());    //縮略地圖控件
map.addControl(new BMap.ScaleControl(opts));      //比例尺控件

控件種類,控件位置,以及控件配置請詳見百度控件API;

自定義控件:

 8 //自定義控件
 9 function selfControll(){
10        this.defaultAnchor=BMAP_ANCHOR_TOP_RIGHT;
11        this.defaultOffset=new BMap.Size(200,200); 
12 }
13 selfControll.prototype=new BMap.Control();
14 selfControll.prototype.initialize=function(map){
15      div=document.createElement("div");
16      div.appendChild(document.createTextNode("放大2級"));
17      div.style.cursor='pointer';
18      div.style.backgroundColor='red';
19      div.onclick=function(e){
20          map.zoomTo(map.getZoom()+2);
21      }
22      //map.getContainer().id   --返回container
23     map.getContainer().appendChild(div);
24     return div;
25 }
26 var selfControll=new selfControll();
27 map.addControl(selfControll);

  1,定義一個自定義的構造函數。2,設置自定義控件構造函數的prototype屬性為Control的實例,以便繼承控件基類。3,實現initialize()方法.4,實例一個自定義控件,向地圖中添加。 

 添加覆蓋物

覆蓋物:所有疊加或覆蓋到地圖的內容,統稱地圖覆蓋物。

地圖集中覆蓋物:

Overlay:覆蓋物的抽象基類,所有的覆蓋物均繼承此類的方法。

Marker:標注表示地圖上的點,可自定義標注的圖標。

Label:表示地圖上的文本標注,您可以自定義標注的文本內容。

Polyline:表示地圖上的折線。

Polygon:表示地圖上的多邊形。多邊形類似於閉合的折線,另外您也可以為其添加填充顏色。

Circle: 表示地圖上的圓。

InfoWindow:信息窗口也是一種特殊的覆蓋物,它可以展示更為豐富的文字和多媒體信息。注意:同一時刻只能有一個信息窗口在地圖上打開。

添加標注

 var marker=new BMap.Marker(point);
 map.addOverlay(marker);

   紅色的就是默認的標注.

添加折線

//添加折線
 var polyline = new BMap.Polyline([    
   new BMap.Point(116.399, 39.910),    
   new BMap.Point(116.405, 39.920)    
 ],    
 {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5}    
 );    
 map.addOverlay(polyline);

Polyline表示地圖上的折線覆蓋物。它包含一組點,並將這些點連接起來形成折線。

 添加信息類

var opts1={
              width:250,
              height:100,
              title:'hello'
            }
       var infoWindow=new BMap.InfoWindow('world',opts1);
       map.openInfoWindow(infoWindow,map.getCenter());

使用infoWindow來創建一個信息窗實例,一個地圖上只能有一個信息窗處於打開狀態

 

 

事件監聽

百度地圖API中大部分對象都含有addEventListener,可以通過該方法來監聽對象的事件

點點擊地圖時觸發事件:

var map = new BMap.Map("container");    
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);    
map.addEventListener("click", function(){    
 alert("您點擊了地圖。");    
});

當拖動地圖后事件:

var map = new BMap.Map("container");    
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);    
map.addEventListener("dragend", function(){    
 var center = map.getCenter();    
 alert("地圖中心點變更為:" + center.lng + ", " + center.lat);    
})

當地圖縮放后事件,

var map = new BMap.Map("container");    
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);    
map.addEventListener("zoomend", function(){    
 alert("地圖縮放至:" + this.getZoom() + "級");    
});

 移除事件

每一個API對象都提供了removeEventListener用來移除事件監聽函數

var map = new BMap.Map("container");    
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);    
function showInfo(e){    
 alert(e.point.lng + ", " + e.point.lat);    
 map.removeEventListener("click", showInfo);    
}    
map.addEventListener("click", showInfo);

用戶第一次點擊地圖會觸發事件監聽函數,在函數內部對事件監聽進行了移除,因此后續的點擊操作則不會觸發監聽函數。

 

 服務配置

 //BMap.LocalSearch提供了若干配置方法,通過它們可以自定義搜索服務的行為以滿足您的需求。
    var local=new BMap.LocalSearch('北京市',{
       renderOptions: {map: map,autoViewport: true},pageCapacity: 9
    }); 
    
    //結果面板 通過設置BMap.LocalSearchOptions.renderOptions.panel屬性,可以為本地搜索對象提供一個結果列表容器,搜索結果會自動添加到容器元素中
    /*var local=new BMap.LocalSearch(map,{
        renderOptions:{map:map,panel:'results'}
    });
    local.search("中關村");*/
    
    //數據接口、
    //BMap.LocalSearch和BMap.LocalSearchOpions類提供了若干設置回調函數的接口,通過它們可以得到搜索結果的數據信息.onSearchComplete包含了每一次搜索結果的數據信息BMap.LocalSearch.getStatus()方法判斷搜素是否成功或者得到錯誤信息
    options={
        onSearchComplete:function(results){
            if(local.getStatus()==BMAP_STATUS_SUCCESS){
                var s=[];
                for (var i = 0; i <results.getCurrentNumPois(); i++) {
                    s.push(results.getPoi(i).title+","+results.getPoi(i).address);
                }
                console.log(s);
            }
        }
    }
     var local=new BMap.LocalSearch(map,options,{
       renderOptions: {map: map,autoViewport: true},pageCapacity: 9
    }); 
    //var local=new BMap.LocalSearch('北京市');
     local.search('中華共和國公安部');
     local.searchNearby('小吃','前門');


     //地理編碼
     var myGeo= new BMap.Geocoder();//創建地址解析協議
    /* myGeo.getPoint('北京市海淀區上地10街10號',function(point){
         if(point){
             map.centerAndZoom(point,16);//調整地圖視野
             map.addOverlay(new BMap.Marker(point));//添加標注到map上
         }
     },'北京市');*/

     //反向地理編碼
     //反向地理編碼的過程正好相反,它根據一個坐標點得到一個地址的描述
     myGeo.getLocation(new BMap.Point(120.305456, 31.570037),function(result){
         if(result){
             alert(result.address);
         }
     });

 

全景控件

         //點擊全景控件會進入全景圖,點擊全景圖右上角的關閉按鈕會退回到普通地圖。 
        //通過全景控件可以從普通地圖進入全景地圖,添加全景控件的方式同添加工具條等控件類似 
          var stCtrl=new BMap.PanoramaControl();
          stCtrl.setOffset(new BMap.Size(20,20));
          map.addControl(stCtrl);
        
        //設置導航控件
          var panorama=new BMap.Panorama('panorama',{navigationControl:false,linksControl:false});
          Panorama.setOptions({navigationControl:false,linksControl:false});

        //設置道路指引控件
        //通過PanoramaOption指定
          var panorama = new BMap.Panorama('panorama', {linksControl:false}); //默認為顯示道路指引控件,默認值為true
        //通過setOptions方法指定
          Panorama.setOptions({linksControl:false});

 

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM