Search code examples
javascriptreactjsleafletreact-leaflet

How can I get the current Leaflet map zoom level?


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}

                    >

Solution

  • 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()}