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

使用自有数据添加图层 最后更新时间: 2024年02月04日

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

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

1、图片作为自定义图层

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

[フレーム]

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

//初始化地图
var map = new AMap.Map("container", {
 center: [116.33719, 39.942384],
 zoom: 15,
});
//创建图片图层
var imageLayer = new AMap.ImageLayer({
 url: "https://amappc.cn-hangzhou.oss-pub.aliyun-inc.com/lbs/static/img/dongwuyuan.jpg", //图片 Url
 bounds: new AMap.Bounds([116.327911, 39.939229], [116.342659, 39.946275]), //图片范围大小的经纬度,传入西南和东北的经纬度坐标
 zIndex: 2, //图层的层级
 zooms: [15, 20], //设置可见级别,[最小级别,最大级别]
});
//将图层添加至地图实例
map.add(imageLayer);

2、Canvas 作为自定义图层

[フレーム]

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

//创建地图
var map = new AMap.Map("container", {
 viewMode: "3D",
 zoom: 15,
 center: [116.335183, 39.941735],
});
//创建并设置 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, //Canvas DOM 对象
 bounds: new AMap.Bounds([116.328911, 39.937229], [116.342659, 39.946275]), //图片范围大小的经纬度,传入西南和东北的经纬度坐标
 zooms: [3, 18],
});
//将 canvas 添加到地图
map.addLayer(CanvasLayer);
draw();

3、灵活切片图层 TileLayer.Flexible

[フレーム]

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

//创建地图
var map = new AMap.Map("container", {
 zoom: 15,
 center: [116.335183, 39.941735],
});
//创建 Flexible 图层
var flexibleLayer = new AMap.TileLayer.Flexible({
 cacheSize: 30, //缓存瓦片数量
 opacity: 0.3, //透明度
 createTile: function (x, y, z, success, fail) {
 /**
 * 自定义切片属性,返回值为切片图片或 canvas
 * @param x: 切片横向编号
 * @param y: 切片纵向编号
 * @param z: 切片层级
 * @param success: 创建成功回调
 * @param fail: 创建失败回调
 */
 if ((x + y) % 3) {
 fail();
 return;
 }
 var img = document.createElement("img");
 img.onload = function () {
 success(img);
 };
 img.crossOrigin = "anonymous"; //必须添加,同时图片要有跨域头
 img.onerror = function () {
 fail();
 };
 img.src = "https://a.amap.com/jsapi_demos/static/images/amap.png";
 },
});
//将图层添加到地图
map.add(flexibleLayer);
示例中心 常见问题

AltStyle によって変換されたページ (->オリジナル) /