1. 程式人生 > >【百度地圖】百度地圖指定省市進行描邊處理,省市外進行半透明遮蓋。

【百度地圖】百度地圖指定省市進行描邊處理,省市外進行半透明遮蓋。

//指定省市進行描邊處理,省市外進行半透明遮蓋。
    function getBoundary2(map,city){
        var bdary = new BMap.Boundary();
        bdary.get(city, function(rs){//獲取行政區域
            map.clearOverlays();//清除地圖覆蓋物
            //思路:利用行政區劃點的集合與外圍自定義東南西北形成一個環形遮罩層
            //1.獲取選中行政區劃邊框點的集合rs.boundaries[0]
            var strs = new Array();
            strs = rs.boundaries[0].split(";");
            var ENWS = "";
            for (var i=0;i<strs.length;i++) {
                ENWS += strs[i] + ";"
            }
            //2.自定義外圍邊框點的集合
            var E_JW = "170.672126, 39.623555;";        //東
            var EN_JW = "170.672126, 81.291804;";       //東北角
            var N_JW = "105.913641, 81.291804;";        //北
            var NW_JW = "-169.604276,  81.291804;";     //西北角
            var W_JW = "-169.604276, 38.244136;";       //西
            var WS_JW = "-169.604276, -68.045308;";     //西南角
            var S_JW = "114.15563, -68.045308;";        //南
            var SE_JW = "170.672126, -68.045308 ;";     //東南角
            //3.新增環形遮罩層
            var ply1 = new BMap.Polygon(ENWS + E_JW + SE_JW + S_JW + WS_JW + W_JW + NW_JW + N_JW + EN_JW + E_JW, {strokeColor:"none",strokeOpacity:0,fillColor:"#fff",fillOpacity:"0.6"}); //建立多邊形覆蓋物
            map.addOverlay(ply1);//遮罩物是半透明的,如果需要純色可以多新增幾層
            //4. 給目標行政區劃新增邊框,其實就是給目標行政區劃新增一個沒有填充物的遮罩層
            var ply = new BMap.Polygon(rs.boundaries[0], {strokeWeight:3,strokeColor:"#114bf3",fillColor:""});
            map.addOverlay(ply);
            map.setViewport(ply.getPath());//調整視野
        });
    }

效果: