← 项目展示

腾讯地图 · 异形区域场景覆盖

前端实验交互示例:用腾讯地图 JS API GL 的 ImageGroundLayer,把 AI 生成的场景概念图按多边形遮罩裁剪后,覆盖到地图上的真实异形地块。支持多场景切换、透明度调节、显隐开关与底图样式切换。

腾讯地图 · 异形区域场景覆盖
在线预览
全屏打开

简介

一个自包含的「异形区域场景覆盖」前端 Demo:在腾讯地图 JS API GL 上,把一张自定义场景概念图,按多边形遮罩裁剪后,覆盖到地图上的一片真实异形区域。

核心思路:

  • 区域用一组 LatLng 多边形定义(默认北京·朝阳公园一带,可在源码 REGION 常量替换)。
  • 场景图由 AI 生成(公园插画 / 生态俯视 / 未来街区 三张),运行时用 Canvas 的 globalCompositeOperation = "destination-in" 按多边形路径裁剪,只保留区域内像素,再转 base64 作为 ImageGroundLayersrc
  • bounds 取多边形的外包矩形,图片随地图缩放贴合地面。

交互能力

控件说明
场景切换公园插画 / 生态俯视 / 未来街区,三组独立图层用 setVisible 切换
图层透明度0–100% 滑块,实时 setOpacity
显示覆盖层勾选框 setVisible 开关
底图样式标准矢量 + style1–5 个性化样式
飞向覆盖区域fitBounds 定位到区域

技术要点

  • ImageGroundLayer:腾讯地图 GL 的「图片地面层」,图片随地图缩放缩放,按 bounds 地理范围贴地。实例方法 setVisible / setOpacity / setBounds / setSrc / setZIndex 齐备;注意 setSrc 对相同 url 不更新,故多场景采用独立图层 + 显隐切换。
  • 异形区域实现ImageGroundLayer.bounds 本身只支持矩形,异形靠「透明遮罩」思路——运行时把场景图与多边形路径合成,区域外像素被清除,实现任意形状覆盖。
  • CORSImageGroundLayer.src 为 base64 时不受跨域限制;远程 url 需服务端允许跨域。
  • 区域边界:额外用 MultiPolygon 画出多边形轮廓,便于在覆盖层隐藏时仍看清区域位置。

如何测试验证

  1. 打开 Demo,地图加载后区域上即覆盖当前场景图。
  2. 右上控制台切换场景、拖透明度、勾选显隐、换底图样式。
  3. 点「飞向覆盖区域」定位。
  4. 内置 Key 需在腾讯地图控制台给当前域名(localhostwww.lilnong.top)加白名单,底图才会加载。