百度地圖api(javascript)只顯示某一行政區域的地圖,其餘周邊地區的都不顯示

參考原文地址:http://www.cnblogs.com/HCVOLCANO/archive/2012/09/12/2681719.htmlhtml

原文的思路很是好,可是我理解了好長時間才搞明白。ide

而後發現其實能夠不用for循環這麼多遍就能夠搞定的,關鍵代碼以下:spa

    var map = new BMap.Map("map_container");
    var cityName = '浙江省';
    map.centerAndZoom(cityName, 8);                     // 初始化地圖,設置中心點座標和地圖級別。    map.addControl(new BMap.ScaleControl());                    // 添加比例尺控件
    map.addControl(new BMap.OverviewMapControl());              //添加縮略地圖控件
    map.enableScrollWheelZoom();
    map.addControl(new BMap.NavigationControl({ type: BMAP_NAVIGATION_CONTROL_LARGE ,anchor: BMAP_ANCHOR_TOP_LEFT, offset: new BMap.Size(40, 250)}));
    var bdary = new BMap.Boundary();
    bdary.get(cityName, function (rs) {       //獲取行政區域       
        map.clearOverlays();        //清除地圖覆蓋物  
       
        //for循環都刪除掉了,只剩下這個
        //網上查了下,東西經南北緯的範圍
        var EN_JW = "180, 90;";         //東北角
        var NW_JW = "-180,  90;";       //西北角
        var WS_JW = "-180, -90;";       //西南角
        var SE_JW = "180, -90;";        //東南角
        //4.添加環形遮罩層
        var ply1 = new BMap.Polygon(rs.boundaries[0] + SE_JW + SE_JW + WS_JW + NW_JW + EN_JW + SE_JW, { strokeColor: "none", fillColor: "rgb(246,246,246)", fillOpacity:1, strokeOpacity: 0.5 }); //創建多邊形覆蓋物

        map.addOverlay(ply1);  
        //5. 給目標行政區劃添加邊框,其實就是給目標行政區劃添加一個沒有填充物的遮罩層
        var ply = new BMap.Polygon(rs.boundaries[0], { strokeWeight: 2, strokeColor: "#00f",fillColor: "" });
        map.addOverlay(ply); 
        //map.setViewport(ply.getPath());    //調整視野
     });
View Code

惟一的問題沒想通的是:內圈和外圈的鏈接處須要2次【SE_JW】這個點(不要問我是怎麼就會想到要放2個同樣的點在這裏,這個真的是在原做者的代碼上一遍遍試出來的,我真不知道原理);若是有誰知道還請詳細說明。code

 預期效果:htm

 

相關文章
相關標籤/搜索