How to get the current zoom level in HERE SDK 4.x for Android (read MapCamera zoom state programmatically)

Symptoms / Triggers
-------------------

You may need this article if:

You need to programmatically read or log the current zoom level of the map in HERE SDK for Android
You are looking for a getZoomLevel() method but cannot find one directly on MapView
You want to react to zoom level changes in real-time (e.g., show/hide UI elements based on zoom)
The documentation for MapCamera.State appears complex and you need a simplified example
You want to track zoom changes during navigation or user interaction with the map

Quick Answer
------------

Access the current zoom level via mapView.getCamera().getState().zoomLevel. This returns a double value in the range [0, 22]. To listen for changes continuously, implement MapCameraListener and override onMapCameraUpdated().

Method 1: Polling with Handler (simple logging)
-----------------------------------------------

Based on the HERE SDK Navigation example — App.java on GitHub, modify the App.java class like this:

<br />package com.here.navigation;import android.content.Context;import android.os.Handler;import android.os.Looper;import android.util.Log;import android.widget.TextView;import androidx.appcompat.app.AlertDialog;import com.here.sdk.core.Color;import com.here.sdk.core.GeoCoordinates;import com.here.sdk.core.GeoPolyline;import com.here.sdk.core.Location;import com.here.sdk.gestures.GestureState;import com.here.sdk.mapview.MapImage;import com.here.sdk.mapview.MapImageFactory;import com.here.sdk.mapview.MapMarker;import com.here.sdk.mapview.MapMeasure;import com.here.sdk.mapview.MapPolyline;import com.here.sdk.mapview.MapView;import com.here.sdk.routing.Route;import com.here.sdk.routing.Waypoint;import java.util.ArrayList;import java.util.List;import java.util.Locale;public class App { // ... (Other fields remain unchanged) private double previousZoomLevel = -1; // Initialize with an invalid value public App(Context context, MapView mapView, TextView messageView) { // ... (Initialization code remains unchanged) handler.post(zoomLevelLogger); // ... (Rest of the constructor remains unchanged) } private Handler handler = new Handler(Looper.getMainLooper()); private Runnable zoomLevelLogger = new Runnable() { @Override public void run() { double currentZoomLevel = mapView.getCamera().getState().zoomLevel; if (previousZoomLevel != currentZoomLevel) { Log.d("MapZoomLevel", "Current Zoom Level: " + currentZoomLevel); previousZoomLevel = currentZoomLevel; } handler.postDelayed(this, 1000); // Check zoom level every second } }; // ... (Rest of the class remains unchanged)}<br />

You will be able to log the current zoom level now.

Method 2: MapCameraListener (event-driven, recommended)
-------------------------------------------------------

This approach is more efficient as it only fires when the camera actually changes:

<br />import com.here.sdk.mapview.MapCamera;import com.here.sdk.mapview.MapCameraListener;public class App implements MapCameraListener { // ... (rest of your fields and methods) @Override public void onMapCameraUpdated(@NonNull MapCamera.State cameraState) { double currentZoomLevel = cameraState.zoomLevel; if (previousZoomLevel != currentZoomLevel) { Log.d("MapZoomLevel", "Current Zoom Level: " + currentZoomLevel); previousZoomLevel = currentZoomLevel; } } public App(Context context, MapView mapView, TextView messageView) { // ... (rest of your constructor code) mapView.getCamera().addListener(this); } public void detach() { // ... (rest of your detach method code) mapView.getCamera().removeListener(this); }}`<br />

Related Documentation
---------------------

HERE SDK for Android Developer Guide – Camera
* Navigation example on GitHub

Applies to: HERE SDK Navigate 4.x, HERE SDK Explore 4.x (Android) | Java & Kotlin | Zoom levels range [0, 22]

Tags: get zoom level, current zoom level, read zoom level programmatically, MapCamera state, zoomLevel property, mapView getCamera getState, zoom level changes listener, MapCameraListener, onMapCameraUpdated, HERE SDK Android, SDK 4.x, zoom tracking, zoom level not exposed, getZoomLevel method, camera state, map zoom, track zoom changes


Did this page help you?