我想在地图加载时打开地图上的多个弹出窗口,我有这个答案的示例适用于一个弹出窗口:
但是当我有多个弹出窗口时,只有一个在加载时打开,打开一个关闭另一个 - 在传单文档(http://leafletjs.com/reference-1.0.0.html#popup)中,它建议使用 addLayer 来避免这种情况但我不知道如何在 react-leaflet 中重新创建它:
const React = window.React;
const { Map, TileLayer, Marker, Popup, MapLayer, LayerGroup } = window.ReactLeaflet;
class SimpleExample extends React.Component {
constructor() {
super();
this.state = {
lat: 51.505,
lng: -0.09,
zoom: 13,
};
}
render() {
const position = [this.state.lat, this.state.lng];
const position2 = [this.state.lat - 0.01, this.state.lng];
return (
<Map center={position} zoom={this.state.zoom}>
<TileLayer
attribution='© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
/>
<ExtendedMarker position={position}>
<Popup>
<span>A pretty CSS3 popup. <br/> Easily customizable.</span>
</Popup>
</ExtendedMarker>
<ExtendedMarker position={position2}>
<Popup position={position2}>
<span>A pretty CSS3 popup. <br/> Easily customizable.</span>
</Popup>
</ExtendedMarker>
</Map>
);
}
}
// Create your own class, extending from the Marker class.
class ExtendedMarker extends Marker {
// "Hijack" the component lifecycle.
componentDidMount() {
// Call the Marker class componentDidMount (to make sure everything behaves as normal)
super.componentDidMount();
// Access the marker element and open the popup.
this.leafletElement.openPopup();
}
}
window.ReactDOM.render(<SimpleExample />, document.getElementById('container'));