Несколько всплывающих окон всегда открыты
Я хотел бы иметь несколько всплывающих окон на карте, которые открываются при загрузке карты, я получил пример из этого ответа для одного всплывающего окна:
Всплывающее окно всегда открыто в маркере
Но когда у меня несколько всплывающих окон, только одна открывается при загрузке, а открытая одна закрывает другую - в листовке документации ( http://leafletjs.com/reference-1.0.0.html) предлагается использовать addLayer, чтобы избежать этого. но я не могу понять, как воссоздать это в ответной листовке:
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 ответов
Любой, кто наткнется на этот вопрос, в более поздней версии буклета (например, 1.0.0+) есть вариант autoClose
в Popup
параметры, которые можно установить false
для отображения нескольких всплывающих окон.
<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 autoClose={false}>
<span>A pretty CSS3 popup. <br/> Easily customizable.</span>
</Popup>
</ExtendedMarker>
<ExtendedMarker position={position2}>
<Popup position={position2} autoClose={false}>
<span>A pretty CSS3 popup. <br/> Easily customizable.</span>
</Popup>
</ExtendedMarker>
</Map>