自定义图层 CustomLayer
自定义图层是完全由开发者指定绘制方法的图层。该图层可以是 canvas、svg、甚至可以是 dom 组成的图层。 JSAPI 能够实现自定义图层与高德地图的同步平移和缩放,并调用开发者的 render 方法进行图层的重绘。 自定义图层使用 AMap.CustomLayer 类来进行构造,构造函数接受两个参数,第一个参数是作为图层的 dom 画布,第二个参数是图层的相关属性设定,与通用图层属性相同。以下为自定义图层的使用方式:
1. 创建一个自定义图层实例JavaScript
// 获取 canvas 实例
var canvas = document.createElement('canvas');
// 将 canvas 宽高设置为地图实例的宽高
canvas.width = map.getSize().width;
canvas.height = map.getSize().height;
// 创建一个自定义图层
var customLayer = new AMap.CustomLayer(canvas, {
zIndex: 12,
zooms: [3, 18] // 设置可见级别,[最小级别,最大级别]
});
map.add(customLayer);
2. 为自定义图层添加渲染方法自定义图层的 render 方法即用户自定义的图层绘制方式。此 render 方法在以下两个时机进行调用:
- API在图层初次绘制
- 地图移动与缩放结束的时
在 render 方法中,开发者应该更新绘制时使用的容器内像素位置来重新绘制图层内容,这个像素位置是由每个经纬度坐标转换而来,通常使用 mapObj. lnglatToContainer 方法进行转换。
JavaScript
// 自定义的 render 方法
function onRender() {
for (var i = 0; i < provinces.length; i += 1) {
// 使用 lngLatToContainer 方法将经纬度转换成当前像素坐标
provinces[i].containerPos = map.lngLatToContainer(provinces[i].center);
}
draw();
if(!started){
autoSize();
started = true;
}
}
// 将自定义的 render 方法挂在自定义图层的 render 属性上
customLayer.render = onRender;
CustomLayer类(插件)
自定义图层是一种完全由开发者来指定绘制方法的图层
构造函数 | 说明 |
---|---|
AMap.CustomLayer(ops:CustomLayerOptions) | 用于构建自定义图层 |
属性 | 类型 | 说明 |
---|---|---|
render | function | 初始化完成时候,开发者需要给该图层设定render方法,该方法需要实现图层的绘制,API会在合适的时机自动调用该方法 |
CustomLayerOptions | 类型 | 说明 |
---|---|---|
map | AMap.Map | 所属的地图对象 |
zIndex | Number | 层级 |
opacity | Number | 透明度 |
zooms | [Number,Number] | 显示级别 |
方法 | 返回值 | 说明 |
---|---|---|
setOpacity() | 设置透明度 | |
setMap(map:AMap.Map/null) | 设置图层所属的地图对象,传入null时从当前地图移除 | |
getMap() | AMap.Map | 返回图层所属的地图对象 |
show() | 显示 | |
hide() | 隐藏 | |
setzIndex(zindex:Number) | 设置层级 | |
getzIndex() | Number | 获取层级 |