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


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

原文的思路非常好,但是我理解了好長時間才搞明白。

然后發現其實可以不用for循環這么多遍就可以搞定的,關鍵代碼如下:

    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個一樣的點在這里,這個真的是在原作者的代碼上一遍遍試出來的,我真不知道原理);如果有誰知道還請詳細說明。

 預期效果:

 


免責聲明!

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



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