第一步先引入一个地图,依旧是以成都地图为例:
仔细看高德地图2.0 api是有完整示例的,但是是纯原生写的,在react中使用就有点不会用了:
最后实现效果图,点击开始编辑并结束编辑就可以获得最终的坐标点:
看一下最后实现代码:
const { AMap } = window;
function mapPark(props) {
//设置地图
const [myMap, setMyMap] = useState(null);
//坐标点列表
const [pointList,setPointList]=useState([])
//初始化地图
const createMap = () => {
const map = new AMap.Map("container", {
zoom: 11, //级别
center: [104.065735, 30.659462], //中心点坐标
});
setMyMap(map);
};
const polyEditor = new AMap.PolygonEditor(myMap);
//开始编辑
const editClick = () => {
polyEditor.open();
};
//结束编辑
const clickHandler = () => {
polyEditor.close();
const list = polyEditor
.getTarget()
.getPath()
.map((item, idx) => {
return [item.KL, item.kT];
});
console.log(list, "获取的坐标点");
setPointList(list)
};
useEffect(function () {
createMap();
}, []);
return (
<div className={styled["industrial-container"]}>
<div>
<div className={styled["enterprise-park-detail"]}></div>
<div style={{ position: "relative", marginTop: "20px" }}>
<div className={styled["enterprise-park-map"]} id="container"></div>
<div className={styled["enterprise-park-card"]}>
<Button type="primary" ghost onClick={() => editClick()}>
开始编辑
</Button>
<Button type="primary" ghost onClick={() => clickHandler()}>
结束编辑
</Button>
</div>
</div>
</div>
</div>
);
}
最后一个小功能就实现了!