百度地圖 map核心類 自定義控件 地圖樣式(setMapStyle) 獲取全景示例(getPanorama())

代碼在此
 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>v3.0版本 map核心類 自定義控件 地圖樣式(setMapStyle) 獲取全景示例(getPanorama())</title>
    <style>
        html{height:100%}    
        body{height:100%;margin:0px;padding:0px}    
        #container{height:80%} 
    </style>
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=你的祕鑰"></script>
</head>
<body>
    <div id="container"></div> 
    <div>
        <button id="bound" >返回地圖可視區域</button>
        <button id="center" >中心點</button>
        <button id="nanhua" >南華大學</button>
        <div id="adds">
            <button name="btns" id="add" >+</button>
            <span>視圖等級</span>
            <button name="btns" id="del" >-</button>
        </div>
        
    </div>
    <script>
        window.onload = function(){
        // 創建地圖實例 
        var map = new BMap.Map("container");
        // 創建點座標 
        var point = new BMap.Point(112.5527201488,26.9273408603);   //衡陽縣第六中學 
        // 設初始化地圖 
        // 若調用高清底圖(針對移動端開發)時,zoom可賦值範圍爲3-18級
        // 如果center類型爲字符串時,比如“北京”,zoom可以忽略,地圖將自動根據center適配最佳zoom級別
        map.centerAndZoom(point, 15);// 初始化地圖,設置中心點座標和地圖級別 3-19
         //設置地圖類型
        //BMAP_NORMAL_MAP    此地圖類型展示普通街道視圖
        //BMAP_SATELLITE_MAP  此地圖類型展示衛星視圖
        //BMAP_HYBRID_MAP 此地圖類型展示衛星和路網的混合視圖
        //map.setMapType();  //格式不清楚 ??
        map.addControl(new BMap.MapTypeControl({ mapTypes: [BMAP_SATELLITE_MAP] }));// 地圖類型
        //map.addControl(new BMap.MapTypeControl());// 地圖類型

        map.enableScrollWheelZoom(true);     //開啓鼠標滾輪縮放
        map.enableDragging();  //啓用地圖拖拽,默認啓用
        //map.disableDragging(); //禁用地圖拖拽

        map.enableScrollWheelZoom(); //啓用滾輪放大縮小,默認禁用
        //map.disableScrollWheelZoom(); //禁用滾輪放大縮小

        map.enableDoubleClickZoom(); //啓用雙擊放大,默認啓用
        //map.disableDoubleClickZoom(); //禁用雙擊放大

        map.enableKeyboard(); //啓用鍵盤操作,默認禁用。 
        //上、下、左、右鍵可連續移動地圖。同時按下其中兩個鍵可使地圖進行對角移動。
        //PgUp、PgDn、Home和End鍵會使地圖平移其1/2的大小。+、-鍵會使地圖放大或縮小一級
        map.disableKeyboard();//禁用鍵盤操作

        map.enableInertialDragging(); //啓用地圖慣性拖拽,默認禁用
        //map.disableInertialDragging(); //禁用地圖慣性拖拽

        map.enableContinuousZoom(); //啓用連續縮放效果,默認禁用
        //map.disableContinuousZoom(); //禁用連續縮放效果

        map.enablePinchToZoom(); //啓用雙指操作縮放,默認啓用
        //map.disablePinchToZoom(); //禁用雙指操作縮放

        map.enableAutoResize(); //啓用自動適應容器尺寸變化,默認啓用
        //map.disableAutoResize(); //禁用自動適應容器尺寸變化

        //設置地圖默認的鼠標指針樣式。參數cursor應符合CSS的cursor屬性規範
        //map.setDefaultCursor("copy");

        //設置拖拽地圖時的鼠標指針樣式
        //map.setDraggingCursor("copy");

        //返回地圖默認的鼠標指針樣式
        console.log(map.getDefaultCursor()); //url(http://api0.map.bdimg.com/images/openhand.cur) 8 8,default

        //返回拖拽地圖時的鼠標指針樣式
        console.log(map.getDraggingCursor()); //url(http://api0.map.bdimg.com/images/closedhand.cur) 8 8,move

        //設置地圖允許的最小級別
        map.setMinZoom(1);

        //設置地圖允許的最大級別
        map.setMaxZoom(19);

        //設置地圖樣式,樣式包括地圖底圖顏色和地圖要素是否展示兩部分
        map.setMapStyle({style:'midnight'})
        //模板
        //默認地圖樣式(normal)
        //清新藍風格(light)
        //黑夜風格(dark)
        //清新藍綠風格(bluish)
        //高端灰風格(grayscale)
        //強邊界風格(hardedge)
        //青春綠風格(darkgreen)
        //浪漫粉風格(pink)
        //午夜藍風格(midnight)
        //自然綠風格(grassgreen)
        //精簡風格(googlelite)
        //紅色警戒風格(redalert)

        //自定義地圖樣式 調試樣式http://wiki.lbsyun.baidu.com/custom/  JavaScript API v3.0 -->個性化地圖-->個性化編輯方式
        // var setstyle = [ {
        //         "featureType": "water",
        //         "elementType": "geometry.fill",
        //         "stylers": {
        //             "color": "#ff0000ff",
        //             "hue": "#ff0000",
        //             "weight": "1",
        //             "lightness": 1,
        //             "saturation": 100,
        //             "visibility": "on"
        //         }
        //   }]
        // map.setMapStyle({
        //     styleJson:setstyle
        // })

        //返回地圖可視區域    
        var boundspan = document.getElementById("bound");    
        // boundspan.click = function(){
        boundspan.addEventListener('click',function(){
            var ss = map.getBounds(); //返回了地圖視野的 左下角 右上角座標
            console.log(ss+"getBounds")
        });

        //返回地圖當前中心點
        var centerbtn = document.getElementById("center");
        centerbtn.addEventListener('click',function(){
            var cen = map.getCenter(); //返回地圖當前中心點
            var cen_point = new BMap.Point(cen.lng,cen.lat);
            var cen_mark = new BMap.Marker(cen_point);
            map.addOverlay(cen_mark);
            var cen_label = new BMap.Label("地圖當前中心點",{position:cen_point});
            map.addOverlay(cen_label);
            console.log(cen.lng,cen.lat,"getCenter")
        })

        var points = [ //百度座標 lng,lat
            {"point":new BMap.Point(112.638886,27.052889),"name":"點一"},
            {"point":new BMap.Point(112.243344,26.748755),"name":"點二"},
            {"point":new BMap.Point(112.552509,26.926427),"name":"衡州別院"},
            {"point":new BMap.Point(112.5783703713,26.8995635436),"name":"衡陽市人民政府"},
            {"point":new BMap.Point(112.6379079719,26.8948866350),"name":"衡陽火車站"},
            {"point":new BMap.Point(112.5962682402,26.9041238628),"name":"南華大學"},
            {"point":new BMap.Point(112.5600814819,26.8928800357),"name":"南華大學附屬第二醫院"},
            {"point":new BMap.Point(112.5561869144,26.8928034872),"name":"生態公園-北門"},
            {"point":new BMap.Point(112.6234089966,26.9170718962),"name":"石鼓書院"},
        ];
        var arrPoints = [];
        for(var i=0;i<points.length;i++){
            var marks = new BMap.Marker(points[i].point);
            var labels = new BMap.Label(points[i].name,{position:points[i].point});
            map.addOverlay(marks);
            map.addOverlay(labels);
            arrPoints.push(points[i].point);
        }


        //返回兩點之間的距離,單位是米
        var distance = map.getDistance(points[4].point,points[6].point);
        console.log(points[4].name +"到"+points[6].name+"的距離是:"+distance+"m");
       
        //返回地圖類型 getMapType
        var name = map.getMapType().getName();//返回地圖類型名稱
        var Layer = map.getMapType().getTileLayer();//返回地圖類型對應的圖層
        //var jection = map.getMapType().ggetProjection();//返回地圖類型所使用的投影實例
        var Color = map.getMapType().getTextColor();//返回地圖類型對應的前景色
        var Tips = map.getMapType().getTips();//返回地圖類型的提示說明,用於在地圖類型控件中提示
        console.log(
            JSON.stringify(map.getMapType())+
            "地圖類型名稱:"+ name+
            "地圖類型對應的圖層:"+Layer+
            //"地圖類型所使用的投影實例"+jection+
            "地圖類型對應的前景色:"+Color+
            "地圖類型的提示說明:"+Tips
        );

        //返回地圖視圖的大小,以像素表示
        console.log("地圖視圖"+JSON.stringify(map.getSize()));

        //此方法僅返回視野信息(中心點座標,縮放),不會將新的中心點和級別做用到當前地圖上 
        console.log("視野信息"+JSON.stringify(map.getViewport()));

        //返回地圖當前縮放級別
        console.log(map.getZoom())

        //將地圖的中心點更改爲給定的點 並移動到
        var nanhua = document.getElementById("nanhua");
        nanhua.addEventListener("click",function(){
            map.panTo(points[5].point)
        })
        
        //將地圖在水平位置上移動x像素,垂直位置上移動y像素。
        //如果指定的像素大於可視區域範圍或者在配置中指定沒有動畫效果,則不執行滑動效果
        // setTimeout(function(){
        //     map.panBy(600,600,{
        //         noAnimation:true //是否在平移過程中禁止動畫
        //     })
        // },2000)
        
        //重新設置地圖,恢復地圖初始化時的中心點和級別
        //map.reset();

        //設置地圖中心點。center除了可以爲座標點以外,還支持城市名
        //map.setCenter(points[5].point);

        //設置地圖城市
        //注意當地圖初始化時的類型設置爲BMAP_NORMAL_MAP時,需要在調用centerAndZoom之前調用此方法設置地圖所在城市
        map.setCurrentCity('衡陽')
             
        //根據提供的地理區域或座標設置地圖視野,調整後的視野會保證包含提供的地理區域或座標
        // map.setViewport(arrPoints,{//ViewportOptions
        //     enableAnimation:true,//是否啓用動畫效果移動地圖,默認爲true。當調整後的級別與當前地圖級別一致時,將使用動畫效果移動地圖
        //     margins:[30, 20, 0, 20] ,//視野調整的預留邊距,例如: margins: [30, 20, 0, 20] 表示座標點會限制在上述區域內
        //     //地圖級別的偏移量,您可以在方法得出的結果上增加一個偏移值。
        //     //例如map.setViewport計算出地圖的級別爲10,如果zoomFactor爲-1,則最終的地圖級別爲9
        //     zoomFactor:-1,
        //     //改變地圖視野的延遲執行時間,單位毫秒,默認爲200ms。此延時僅針對動畫效果有效
        //     delay:3000
        // });
        // map.setViewport({//Viewport
        //     center:arrPoints[5],//視野中心點
        //     zoom:4 //視野級別
        // },{//ViewportOptions 同上});
        map.setViewport(arrPoints);

        var opts = {    
            width : 250,     // 信息窗口寬度    
            height: 100,     // 信息窗口高度    
            title : "Hello"  // 信息窗口標題   
        }
        var infoWindow = new BMap.InfoWindow("World", opts); 
        map.openInfoWindow(infoWindow,arrPoints[1]);
        //將視圖切換到指定的縮放等級,中心點座標不變
        //注意:當有信息窗口在地圖上打開時,地圖縮放將保證信息窗口所在的座標位置不動
        var btn = document.getElementsByName("btns")
        var zoom = 15;
        btn[0].addEventListener("click",function(e){ //+
            zoom++;
            //map.setZoom(zoom);
            map.zoomIn();//放大一級視圖
        })
        btn[1].addEventListener("click",function(e){ //-
            zoom--;
            //map.setZoom(zoom);
            map.zoomOut();//縮小一級視圖
        })

        var kon = new BMap.OverviewMapControl();
        //添加控件
        //map.addControl(kon);// 縮略地圖

        //移除控件
        //map.removeControl(kon);// 縮略地圖


        //返回地圖的容器元素。
        console.log(map.getContainer());

        var Menu = new BMap.ContextMenu();
        Menu.addItem(new BMap.MenuItem("dd"))
        //添加右鍵菜單--->右鍵菜單.html
        

        //將全景實例與Map類進行綁定 ---> 全景.html
        //map.setPanorama()

        //獲取與Map類綁定的全景實例
        //?當創建用戶自定義控件時,需要自行實現Control.initialize()方法,並將控件的容器元素添加到地圖上,通過此方法可獲得地圖容器
        console.log(map.getPanorama())
        // 控件 ---> 控件.html
        }
 
    </script>
</body>
</html>

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章