地面叠加层覆盖物
更新时间:2020年12月14日
简介
JSAPI GL提供的GroundOverlay类支持在地图底面上叠加覆盖物,覆盖物可以是图片、自定义Canvas、视频。
GroundOverlay类继承Overlay类,基于Bounds确定在地面上的显示范围和大小,通过options来配置覆盖物的类型、源、透明度等。
GroundOverlay类参考
构造函数:
| 构造函数 | 说明 |
| BMapGL.GroundOverlay(bounds, options) | GroundOverlay继承Overlay,用于添加地面叠加层覆盖物,通过options自定义叠加层的类型(图片、视频、canvas)等 |
参数说明:
| 构造函数 | 类型 | 说明 |
| bounds | Bounds | 叠加图层显示的矩形区域,通过Bounds类创建的对象 |
| options | Object | 叠加层样式配置,可选 |
options属性变量:
| options属性 | 类型 | 说明 |
| type | string | 'video' | 'canvas',默认为image |
| url | string | video url | 自定义的canvas对象 |
| opacity | number | 图层透明度,默认为1,范围0-1 |
图片类型示例
1创建地图参照展示地图
2创建地面叠加层实例,并添加到地图上
创建地面叠加层使用BMapGL.GroundOverlay类,其继承自Overlay,通过map.addoverlay()方法将创建的叠加层添加到地图上。
// 创建叠加物显示的范围Bounds
var pStart = new BMapGL.Point(117.19635, 36.24093);
var pEnd = new BMapGL.Point(117.20350, 36.24764);
var bounds = new BMapGL.Bounds(new BMapGL.Point(pStart.lng, pEnd.lat),
new BMapGL.Point(pEnd.lng, pStart.lat));
// 创建地面叠加层实例
var imgOverlay = new BMapGL.GroundOverlay(bounds, {
type: 'image',
url: '/jsdemo/img/shouhuimap.png',
opacity: 1
});
// 叠加层添加到地图
map.addOverlay(imgOverlay);
canvas类型叠加层
1
当叠加层纹理是canvas类型时,使用方法与图片类似,在options中设置其纹理源。
// 自定义canvas
function getTextureCanvas() {
var textureCanvas = document.createElement('canvas');
textureCanvas.width = textureCanvas.height = 200;
var ctx = textureCanvas.getContext('2d');
ctx.fillStyle = '#79a913';
ctx.strokeStyle = 'white';
ctx.lineWidth = 6;
ctx.lineCap = 'square';
ctx.fillRect(0, 0, 200, 200);
ctx.moveTo(50, 50);
ctx.lineTo(150, 50);
ctx.lineTo(150, 150);
ctx.lineTo(50, 150);
ctx.lineTo(50, 50);
ctx.stroke();
return textureCanvas;
}
// 添加canvas叠加层
var canvasSource = getTextureCanvas();
var pStart = new BMapGL.Point(116.447717, 39.919173);
var pEnd = new BMapGL.Point(116.453125, 39.923475);
var bounds = new BMapGL.Bounds(new BMapGL.Point(pStart.lng, pEnd.lat),
new BMapGL.Point(pEnd.lng, pStart.lat));
var canvasOverlay = new BMapGL.GroundOverlay(bounds, {
type: 'canvas',
url: canvasSource,
opacity: 0.9
});
map.addOverlay(canvasOverlay);
video类型叠加层
1
当叠加层纹理是video类型时,使用方法与图片和canvas类似,在options中设置其纹理源。
var pStart = new BMapGL.Point(94.582033, -7.989754);
var pEnd = new BMapGL.Point(145.358572, 30.813867);
var bounds = new BMapGL.Bounds(new BMapGL.Point(pStart.lng, pEnd.lat),
new BMapGL.Point(pEnd.lng, pStart.lat));
var imgOverlay = new BMapGL.GroundOverlay(bounds, {
type: 'video',
url: '/jsdemo/img/cloud.mov',
opacity: 0.5
});
map.addOverlay(imgOverlay);
没有match的答案?试试对话大模型




