Skip to content

Overlay 类

覆盖物的抽象基类,所有覆盖物均继承基类的方法。此类不可实例化。

方法

方法返回值描述
initialize(map: Map)HTMLElement抽象方法,用于初始化覆盖物,当调用 map.addOverlay 时,API 将调用此方法。自定义覆盖物时需要实现此方法。自定义覆盖物时需要将覆盖物对应的 HTML 元素返回
isVisible()Boolean判断覆盖物是否可见
draw()none抽象方法,当地图状态发生变化时,由系统调用对覆盖物进行绘制。自定义覆盖物需要实现此方法
show()none显示覆盖物。对于自定义覆盖物,此方法会自动将 initialize 方法返回的 HTML 元素样式的 display 属性设置为空
hide()none隐藏覆盖物。对于自定义覆盖物,此方法会自动将 initialize 方法返回的 HTML 元素样式的 display 属性设置为 none

示例

javascript
// 自定义覆盖物
function CustomOverlay(point) {
    this._point = point;
}
CustomOverlay.prototype = new BMapGL.Overlay();

// 实现初始化方法
CustomOverlay.prototype.initialize = function(map) {
    // 创建 div 元素
    var div = document.createElement("div");
    div.style.position = "absolute";
    div.style.backgroundColor = "#EE5D5B";
    div.style.padding = "5px";
    div.innerHTML = "自定义覆盖物";
    
    // 将 div 添加到覆盖物容器中
    map.getPanes().markerPane.appendChild(div);
    this._div = div;
    
    return div;
};

// 实现绘制方法
CustomOverlay.prototype.draw = function() {
    // 根据地理坐标转换为像素坐标
    var position = this._map.pointToOverlayPixel(this._point);
    this._div.style.left = position.x + "px";
    this._div.style.top = position.y + "px";
};

常见用途

  1. 创建自定义覆盖物
javascript
// 创建自定义覆盖物实例
var point = new BMapGL.Point(116.404, 39.915);
var customOverlay = new CustomOverlay(point);

// 添加到地图
map.addOverlay(customOverlay);
  1. 控制覆盖物显示/隐藏
javascript
// 检查覆盖物是否可见
if (customOverlay.isVisible()) {
    customOverlay.hide();  // 隐藏覆盖物
} else {
    customOverlay.show();  // 显示覆盖物
}

注意事项

  1. Overlay 是一个抽象基类,不能直接实例化
  2. 自定义覆盖物必须实现 initializedraw 这两个抽象方法
  3. initialize 方法必须返回覆盖物对应的 HTML 元素
  4. draw 方法负责更新覆盖物的位置,在地图状态(如平移、缩放等)发生变化时会被调用
  5. 可以通过 show()hide() 方法控制覆盖物的显示和隐藏
  6. 在实现自定义覆盖物时,建议保存 map 对象的引用,以便在 draw 方法中使用

基于 MIT 许可发布