百度地图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

 

相关文章
相关标签/搜索