Reputation: 179
I'm trying to get the zoom level of a map in real time to make a button that locks the zoom with the current value. I have tried using getMapZoom and getZoom but both give me an undefined value. I think I'm not using the correct ref but I haven't been able to find much documentation about it. Here's the code:
<Map className="map-layer"
center={center}
onoverlayadd={this.overlayadd}
onoverlayremove={this.overlayremove}
ondragend={this.zoomChange}
onzoomend={console.log('Zoom: ' + this.mapRef.leafletElement.getMapZoom())}
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}
maxZoom={7}
minZoom={7}
>
Upvotes: 15
Views: 31781
Reputation: 65
The following code works in JavaScript:
map.on('zoomend', function (e) {
console.log(e.target._zoom);
});
Upvotes: 3
Reputation: 2019
In react You can get zoomLevel by using getZoom method() and using useRef.
1) const mapRef = useRef(null)
2) const getMapZoom = () => {
return mapRef && console.log("object", mapRef.current.getZoom());
};
3) <MapContainer
className="markercluster-map"
center={center}
zoom={ZOOM_LEVEL}
maxZoom={MAX_ZOOM}
ref={mapRef}
whenCreated={(mapInstance) => (mapRef.current = mapInstance)}
whenReady={() => {}}
>
Upvotes: -1
Reputation: 1515
In pure leaflet if you defined map as const map = L.map("map", options)
than you just call map.getZoom()
.
In constructor this.mapRef = React.createRef()
In Map element:
ref={this.mapRef}
onzoomend={() => console.log(this.mapRef.current.leafletElement.getZoom()}
Upvotes: 22