Ранее я спрашивал, как получить фактический уровень масштабирования, потому что я пытался изменить maxZoom и minZoom на этот текущий масштаб, но я не могу изменить эти параметры после того, как объявил их:
<Map className="map-layer"
center={center}
onoverlayadd={this.overlayadd}
onoverlayremove={this.overlayremove}
ondragend={this.zoomChange}
onzoomend={() => console.log(this.mapRef.current.leafletElement.getZoom())}
zoom={this.state.zoom}
ref={this.mapRef}
preferCanvas={false}
animate={true}
maxZoom={this.state.zoomLock ? this.mapRef.current.leafletElement.getZoom() : 10}
minZoom={this.state.zoomLock ? this.mapRef.current.leafletElement.getZoom() : 1}
>
Я также пытаюсь отключить все способы изменения масштаба, но zoomControl не меняется после того, как я объявил его, точно так же как максимальное и минимальное увеличение.
<Map className="map-layer"
center={center}
onoverlayadd={this.overlayadd}
onoverlayremove={this.overlayremove}
ondragend={this.zoomChange}
onzoomend={() => console.log(this.mapRef.current.leafletElement.getZoom())}
zoom={this.state.zoom}
ref={this.mapRef}
preferCanvas={false}
animate={true}
scrollWheelZoom={this.state.zoomLock ? false : true}
doubleClickZoom={this.state.zoomLock ? false : true}
touchZoom={this.state.zoomLock ? false : true}
zoomControl={this.state.zoomLock ? false : true}
>
И это кнопки, которые изменяют состояние zoomLock:
{
this.state.zoomLock ?
<button onClick={ () => { this.setState({ zoomLock:false }); } } type="button" className="btn btn-outline-dark">Zoom Lock: ON</button>
:
<button onClick={ () => { this.setState({ zoomLock:true }); } } type="button" className="btn btn-outline-dark">Zoom Lock: OFF</button>
}