baidu Map地图遮罩
一、场景引入
做地图轨迹时,轨迹连线不明显,需增加地图遮罩效果
二、解决方案
方案一、使用 Polygon 多边形
定义一个阴影覆盖物,大小覆盖整个地图
代码如下:
// 添加遮罩 addMask() { var maskPoints = [] var EN_JW = new BMap.Point(180, 90) // 东北角 var NW_JW = new BMap.Point(-180, 90) // 西北角 var WS_JW = new BMap.Point(-180, -90) // 西南角 var SE_JW = new BMap.Point(180, -90) // 东南角 maskPoints.push(EN_JW) maskPoints.push(SE_JW) maskPoints.push(WS_JW) maskPoints.push(NW_JW) this.mask = new BMap.Polygon(maskPoints, { strokeColor: 'none', strokeOpacity: 1, fillColor: '#000', //遮罩颜色 fillOpacity: 0.3, //遮罩透明度 }) this.mask.disableMassClear() //禁止覆盖物在 map.clearOverlays 方法中被清除 this.map.addOverlay(this.mask) },
效果:
说明:
上述是在整个地图添加遮罩,可根据传入的点位,自定义图形,如某区县取消遮罩
方案二、GroundOverlay图层
// 西南角和东北角 var SW = new BMap.Point(-180, -90); var NE = new BMap.Point(180, 90); const groundOverlayOptions = { opacity: 1, displayOnMinLevel: 12, displayOnMaxLevel: 15 } // 初始化GroundOverlay this.mask = new BMap.GroundOverlay(new BMap.Bounds(SW, NE), groundOverlayOptions); // 设置GroundOverlay的图片地址 this.mask.setImageURL(require('./mask.png')); this.map.addOverlay(this.mask) this.mask.addEventListener('click', (e)=>{ })
方案三、TileLayer自定义图层
this.mask = new BMap.TileLayer(); // 创建地图层实例 this.mask.getTilesUrl=function(){ // 设置图块路径 return require('./mask.png'); }; this.map.addTileLayer(this.mask);
清除图层需使用 removeTileLayer 方法
this.map.removeTileLayer(this.mask);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!