Reactjs 谷歌地图绘制管理器:如何删除创建的形状(例如圆形)?
如何在谷歌地图Reactjs 谷歌地图绘制管理器:如何删除创建的形状(例如圆形)?,reactjs,Reactjs,如何在谷歌地图DrawingManager中删除已创建的形状 <DrawingManager // defaultDrawingMode={google.maps.drawing.OverlayType.} defaultOptions={{ drawingControl: true, drawingControlOptions: { position: google.m
DrawingManager
中删除已创建的形状
<DrawingManager
// defaultDrawingMode={google.maps.drawing.OverlayType.}
defaultOptions={{
drawingControl: true,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: [
google.maps.drawing.OverlayType.CIRCLE,
google.maps.drawing.OverlayType.POLYGON,
// google.maps.drawing.OverlayType.POLYLINE,
// google.maps.drawing.OverlayType.RECTANGLE,
],
},
circleOptions: {
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35,
draggable: true,
editable: true,
},
polygonOptions: {
strokeColor: '#FF0000',
strokeOpacity: 1.0,
strokeWeight: 3,
fillColor: '#FF0000',
fillOpacity: 0.3,
draggable: true,
editable: true,
},
}}
onOverlayComplete={this.handleOverlayComplete}
/>
当通过绘图管理器(谷歌地图)创建一个形状时,在创建它之后,我想删除那个形状,但在那个形状上我遇到了困难。
ReactJS要操作绘制的形状,可以考虑以下方法: 引入
形状
变量以保留对绘制形状的引用:
class Map extends Component {
constructor(props) {
super(props);
this.shapes = [];
}
//...
}
触发overlycomplete
事件后,保存绘制的形状:
handleOverlayComplete(e) {
const shape = e.overlay;
shape.type = e.type;
google.maps.event.addListener(shape, "click", () => {
this.toggleSelection(shape);
});
this.toggleSelection(shape);
this.shapes.push(shape)
}
最后,可以从地图中删除绘制的形状,如下所示:
deleteShapes() {
this.state.shapes.forEach(shape => shape.setMap(null));
}
供参考
注意:在提供的演示中删除形状:
- 通过单击手动光标按钮选择停止绘图模式
- 单击贴图(形状的外部边界)
我建议在你的问题中加入一些代码。这将增加您获得答案的机会,并减少您的问题被标记和关闭的机会。@acarlstein,对不起,忘记添加代码了。这是一个组件,用于在地图上绘制圆形和多边形等形状,但在绘制完这些形状后,我想删除它们,我是react的新手,我看到了一些不起作用的例子。是的,这一个删除了所有的形状,但是我如何才能使它只删除一个形状?