开发 地图 JS API 2.0 进阶教程 图层 使用自有数据添加图层

使用自有数据添加图层 最后更新时间: 2023年03月24日

本章将介绍如何在地图上添加自有数据,包括:

  1. 图片图层 AMap.ImageLayer
  2. Canvas 图层 AMap.CanvasLayer
  3. 灵活切片图层 TileLayer.Flexible

图片作为自定义图层

本小节介绍如何在地图上添加自定义图片资源。

图片图层类。将静态图片作为图层添加在地图上,图片图层会随缩放级别而自适应缩放。

// 创建图片图层
var imageLayer = new AMap.ImageLayer({
  url: '图片url', // 图片 Url
  zIndex: 2,
  zooms: [3, 18] // 设置可见级别,[最小级别,最大级别]
});

// 将图层添加至地图实例
map.add(imageLayer);

Canvas 作为自定义图层

Canvas 图层类,将Canvas作为图层添加在地图上,Canvas 图层会随缩放级别而自适应缩放。

// 创建并设置 canvas
var canvas = document.createElement('canvas');
canvas.width = canvas.height = 200;
var context = canvas.getContext('2d')
context.fillStyle = 'rgb(0,100,255)';
context.strokeStyle = 'white';
context.globalAlpha = 1;
context.lineWidth = 2;
var radious = 0;
// 调用 canvas 进行绘制
var draw = function () {
  context.clearRect(0, 0, 200, 200)
  context.globalAlpha = (context.globalAlpha - 0.01 + 1) % 1;
  radious = (radious + 1) % 100;
  context.beginPath();
  context.arc(100, 100, radious, 0, 2 * Math.PI);
  context.fill();
  context.stroke();
  AMap.Util.requestAnimFrame(draw);
};
// 创建 canvas 图层
var CanvasLayer = new AMap.CanvasLayer({
  canvas: canvas,
  bounds: new AMap.Bounds(
    [116.328911, 39.937229],
    [116.342659, 39.946275]
  ),
  zooms: [3, 18],
});
// 将 canvas 添加到地图
map.addLayer(CanvasLayer);
draw();

灵活切片图层 TileLayer.Flexible 

灵活切片图层类,使用该图层可实现自定义每个切片的内容。通过指定 TileLayer.Flexible 类的 createTile 属性传入切片内容。具体方法如下:

// 创建 Flexible 图层
var flexibleLayer = new AMap.TileLayer.Flexible({
  /**
  * 自定义切片属性,返回值为切片图片或 canvas   
  * @param x: 切片横向编号
  * @param y: 切片纵向编号
  * @param z: 切片层级
  * @param success: 创建成功回调
  * @param fail: 创建失败回调
  */
	createTile: function(x,y,z, success, fail){
  	var image = imageList[x];
  	return image;
  },
	cacheSize: 256, // 内存中缓存的切片的数量上限
	zIndex:2,
	zooms: [3, 18] // 设置可见级别,[最小级别,最大级别]
});

// 将图层添加到地图
map.add(flexibleLayer);
示例
中心
常见
问题
智能
客服