Я использую google-map-реагировать (не реагирует- google-maps) и могу вставлять полигоны, вызывая функцию polygonDraw в моем основном компоненте (не используя DrawingManager). Мою функцию polygonDraw можно увидеть ниже.
Я могу немедленно удалить самый новый многоугольник, добавив polygon.setMap (null) внутри моей функции polygonDraw.
Но вот проблема: Я не могу удалить ранее добавленные полигоны или все полигоны. Мне нужно иметь возможность удалять все многоугольники и делать это независимо от обработчиков событий (как событие щелчка на многоугольнике).
Я пробовал разные подходы, но не имел успешной реализации, включая: Я не могу создать компонент Polygon, который отображает новые объекты google.maps.Polygon ({. Et c.}) (На основе состояния / реквизитов).
Как я могу вставить Полигоны с моей функцией polygonDraw В настоящее время я думаю о стратегии так: устанавливает sh ссылку для каждого добавленного многоугольника. Я пытался реализовать ссылки React, включая ссылки на обратный вызов и использование React.createRef. Но безуспешно. Мой polygonDraw находится внутри основного компонента, но вне рендера. Я не могу понять, возможно ли установить sh и сохранить ссылку на каждый добавленный многоугольник, поэтому для каждого можно вызвать reference.setMap (null). И если это возможно, я не знаю, как установить sh ссылку (код внутри конструктора ?, код внутри polygonDraw ?, код внутри рендеринга, включая GoogleMapReact?)
Любая помощь / совет приветствуется: - )
polygonDraw = () => {
let polygonCoords = [{lat: this.state.lat, lng: this.state.lng}, {.etc.}, {.etc.}]
const polygon = new google.maps.Polygon({
paths: [polygonCoords],
fillColor: 'rgb(255, 215, 0)',
});
polygon.setMap(this.state.map.map);
}
render() {
return (
<GoogleMapReact
.etc.
></GoogleMapReact>
)}