huiyan-fe / react-bmapgl

基于百度地图JavaScript GL版API封装的React组件库
http://huiyan.baidu.com/github/react-bmapgl/
MIT License
114 stars 20 forks source link

请教,如何修改polygon的path? #70

Closed hVenus closed 1 year ago

hVenus commented 1 year ago

地图中添加了一个marker和一个polygon。 polygon开启了编辑功能,现在希望在用户编辑了polygon之后,能有一个“重置”的按钮,点了之后就恢复成一个原始的正文形区域。 这个“重置”应该如何操作polygon ?

代码如下:

` <Map enableScrollWheelZoom={true} center={{ lng: props.values.address?.longitude || 0, lat: props.values.address?.latitude || 0, }} zoom="14" style={{ height: 800 }} ref={(ref) => { setRefMap(ref?.map); }}

<Marker position={{ lng: props.values.address?.longitude || 0, lat: props.values.address?.latitude || 0, }} /> <Polygon ref={(e: any) => { setRefPolygon(e?.Polygon); }} enableEditing={true} strokeColor="red" path={mPath} /> `

使用了 refPolygon.setPath(path),报错,说setPath不存在。 直接重置mPath,只能重重一次,用户再次编辑polygon之后,就没法恢复了。

哪位高人能指点迷津,谢谢

hVenus commented 1 year ago

解决了。 先把坐标生成 BMapGL.Point 数组, 再用refPolygon.overlay.setPath()设置。 虽不知对错,但目前运行良好。

const paths = [];
default_polygon.map((item) => {
  paths.push(new BMapGL.Point(item.lng, item.lat));
});
refPolygon.overlay.setPath(paths);