我試圖通過使用反應的狀態來製作動態多邊形,但是單張多邊形不會被重新渲染。React-Leaflet多邊形不會被重新渲染
目標是創建用戶在地圖上創建點擊的多邊形。
class SimpleExample extends React.Component {
constructor() {
super();
this.state = {
positions: [[51.505, -0.09]]
};
}
addPosition = (e) => {
const {positions} = this.state
console.log('Adding positions', positions)
positions.push([e.latlng.lat, e.latlng.lng])
this.setState({positions})
}
render() {
console.log('Should render new positions', this.state.positions)
const staticPositions = [[51.505, -0.09], [51.4958128370432, -0.10728836059570314], [51.49602657961649, -0.09956359863281251]]
return (
<Map
center={[51.505, -0.09]}
onClick={this.addPosition}
zoom={13}
>
<TileLayer
attribution='© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
/>
<Polygon positions={this.state.positions} color="blue" />
<Polygon positions={staticPositions} color="red" />
<Polyline positions={this.state.positions} />
</Map>
);
}
}
請結帳此琴: https://jsfiddle.net/cesargdm/j2g4ktsg/1/
你能提供更多關於你想要完成的細節嗎? –
當然,只是想創建一個用戶創建的多邊形,點擊地圖。 這是用戶在地圖上單擊,並將座標保存在狀態,用此多邊形獲取其座標。 – cesargdm
埃德加恩裏克斯:) – cesargdm