多边形绘制和编辑 最后更新时间: 2024年03月13日
AMap.Polygon可以绘制多边形,多边形是由多个点组成的可填充的形状,可以是任何形状,例如矩形、三角形等,用于标记特定区域。本文介绍如何在地图上绘制编辑多边形,并设置填充颜色、轮廓线宽度等属性。
多边形绘制示例
提示
多边形AMap.Polygon提供设置填充颜色、描边颜色、轮廓线样式、填充透明度等属性。
1、绘制多边形
1.1 准备
成为开发者并创建 key
为了正常调用 API ,请先注册成为高德开放平台开发者,并申请 web 平台(JS API)的 key 和安全密钥,点击 具体操作。
提示
你在2021年12月02日以后申请的 key 需要配合你的安全密钥一起使用。
1.2 创建地图
//创建地图
var map = new AMap.Map("container", {
center: [121.045332, 31.19884], //地图中心点
mapStyle: "amap://styles/whitesmoke", //设置地图的显示样式
viewMode: "2D", //设置地图模式
zoom: 8.8, //地图级别
});
1.3 设置多边形轮廓线的节点坐标数组
//多边形轮廓线的节点坐标数组
var path = [
new AMap.LngLat(116.368904, 39.913423),
new AMap.LngLat(116.387271, 39.912501),
new AMap.LngLat(116.398258, 39.9046),
];
注意
多边形支持普通多边形,带单个孔多边形,带多个孔多边形类型绘制。
对应各种类型多边行的轮廓坐标数组示意:(假设 lnglat = new AMap.LngLat(lng, lat) 或 lnglat = [lng, lat])
普通多边形:path = [lnglat, lnglat ...] 或 path = [[lnglat, lnglat ...]]
带单个孔多边形:path = [[lnglat, lnglat ...], [ lnglat, lnglat ...]]
带多个孔多边形:path = [[lnglat, lnglat ...], [lnglat, lnglat ... ], [lnglat, lnglat ...] ...]
1.4 创建多边形 Polygon 实例
//创建多边形 Polygon 实例
var polygon = new AMap.Polygon({
path: path, //路径
fillColor: "#fff", //多边形填充颜色
strokeWeight: 2, //线条宽度,默认为 2
strokeColor: "red", //线条颜色
});
1.5 多边形 Polygon 对象添加到 Map
//多边形 Polygon对象添加到 Map
map.add(polygon);
//将覆盖物调整到合适视野
map.setFitView([polygon])
提示
使用map.add()方法将多边形实例添加到地图中,map.setFitView()方法会根据地图上添加的覆盖物分布情况,自动缩放地图到合适的视野级别。
1.6 给 Polygon 添加事件
//鼠标移入事件
polygon.on("mouseover", () => {
polygon.setOptions({
//修改多边形属性的方法
fillOpacity: 0.7, //多边形填充透明度
fillColor: "#7bccc4",
});
});
//鼠标移出事件
polygon.on("mouseout", () => {
polygon.setOptions({
fillOpacity: 1,
fillColor: "#fff",
});
});
2、多边形编辑
AMap.PolygonEditor多边形编辑插件,支持对原有的多边形进行修改或直接在地图上动态绘制多边形,通过调整多边形的位置、大小、形状,从而实现实时编辑和绘制
2.1 构造多边形编辑对象,并开启多边形的编辑状态
//引入多边形编辑器插件
map.plugin(["AMap.PolygonEditor"], function () {
//实例化多边形编辑器,传入地图实例和要进行编辑的多边形实例
var polygonEditor = new AMap.PolygonEditor(map, polygon);
//开启编辑模式
polygonEditor.open();
});
提示
polygonEditor.open()为开始编辑对象的方法,如果你想结束编辑可以调用polygonEditor.close()方法。