百度地图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个一样的点在这里,这个真的是在原作者的代码上一遍遍试出来的,我真不知道原理);如果有谁知道还请详细说明。

 预期效果:

 

posted @ 2015-12-11 10:33  小虾米zheng  阅读(24112)  评论(4编辑  收藏  举报