我想在地图加载时打开地图上有多个弹出窗口,我已经从这个答案的示例中找到了一个弹出窗口:
Popup always open in the marker
但是当我有多个弹出窗口时,只有一个在加载时打开并且打开一个关闭另一个 - 在传单文档(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'));
答案 0 :(得分:0)
任何人都对这个问题感到困惑,在更高版本的传单(例如:1.0.0+)中,Popup
的选项中有一个选项autoClose
,您可以将其设置为{{1 }}以显示多个弹出窗口。
false