• 百度地图 圈出省份轮廓图并高亮


    //描绘省份轮廓线
        addSCBorder:function () {
            var blist = [];
    
            /**
             * 添加行政区划
             * @param {} districtName 行政区划名
             * @returns  无返回值
             */
            function addDistrict(districtName) {
                var me = this;
                //使用计数器来控制加载过程
                //使用百度接口加载边界经纬度数据
                var bdary = new BMap.Boundary();
                bdary.get(districtName, function (rs) {       //获取行政区域
                    blist.push({points: rs.boundaries[0], name: districtName});
                    drawBoundary();
                });
            }
    
            function drawBoundary() {
                //包含所有区域的点数组
                var pointArray = [];
    
                /*画遮蔽层的相关方法
                 *思路: 首先在中国地图最外画一圈,圈住理论上所有的中国领土,然后再将每个闭合区域合并进来,并全部连到西北角。
                 *      这样就做出了一个经过多次西北角的闭合多边形*/
                //定义中国东南西北端点,作为第一层
                var pNW = {lat: 59.0, lng: 73.0};
                var pNE = {lat: 59.0, lng: 136.0};
                var pSE = {lat: 3.0, lng: 136.0};
                var pSW = {lat: 3.0, lng: 73.0};
                //向数组中添加一次闭合多边形,并将西北角再加一次作为之后画闭合区域的起点
                var pArray = [];
                pArray.push(pNW);
                pArray.push(pSW);
                pArray.push(pSE);
                pArray.push(pNE);
                pArray.push(pNW);
                //循环添加各闭合区域
                //添加显示用标签层
                var label = new BMap.Label(blist[0].name, {offset: new BMap.Size(20, -10)});
                label.hide();
                map.addOverlay(label);
    
                //添加多边形层并显示
                var ply = new BMap.Polygon(blist[0].points, {
                    strokeWeight: 2,
                    strokeColor: "#FF0000",
                    fillOpacity: 0.01,
                    fillColor: " #FFFFFF"
                }); //建立多边形覆盖物
                ply.name = blist[0].name;
                ply.label = label;
                ply.Type = "Border";
                map.addOverlay(ply);
    
                //将点增加到视野范围内
                var path = ply.getPath();
                pointArray = pointArray.concat(path);
                //将闭合区域加到遮蔽层上,每次添加完后要再加一次西北角作为下次添加的起点和最后一次的终点
                pArray = pArray.concat(path);
                pArray.push(pArray[0]);
    
                //限定显示区域,需要引用api库
                try {
                    map.setViewport(pointArray);    //调整视野
                } catch (err) {
                    console.log(err)
                }
    
    
                //添加遮蔽层
                var plyall = new BMap.Polygon(pArray, {
                    strokeOpacity: 0.0000001,
                    strokeColor: "#04121b",
                    strokeWeight: 0.00001,
                    fillColor: "#04121b",
                    fillOpacity: 0.7
                }); //建立多边形覆盖物
                plyall.Type = "Border";
                map.addOverlay(plyall);
    
            }
    
            addDistrict("上海市浦东新区")
        }
  • 相关阅读:
    121. 122. 123. 188. Best Time to Buy and Sell Stock *HARD* 309. Best Time to Buy and Sell Stock with Cooldown -- 买卖股票
    from __future__ import absolute_import
    sql之left join、right join、inner join的区别
    Eclipse workspace 被占用问题
    JavaScript SetInterval与setTimeout使用方法详解
    提示框3秒钟后自动消失
    页面加载及取消加载
    分层总结
    java中的注释
    canvas画图
  • 原文地址:https://www.cnblogs.com/wcnwcn/p/9961679.html
Copyright © 2020-2023  润新知