An implementation of logarithmic zoom level getter & setter missed in MKMapView.

version Swift: 5.0+ iOS: 9.0+ macOS: 10.11+ tvOS: 9.2+
Build on Xcode (latest) Build on Xcode (12 beta)
SwiftPM: compatible license contact: @stleamist


MKZoomLevel is an implementation of zoom level getter & setter for MKMapView that works exactly the same as the private _zoomLevel property without resetting the camera angle.


  • It returns exactly the same value as the internal _zoomLevel value as well as when the orientation or the angle is changed, which is in the MKMapView’s private API.
  • It preserves the value of heading and pitch of the camera property for a new zoom level as they are, rather than resetting the camera angle.
  • It returns the latest zoom level even when the animation of region change is not finished, in contrast with the camera property.


import MapKit
import MKZoomLevel

let mapView = MKMapView()

// Get the zoom level

// Set the zoom level
mapView.zoomLevel = 16.0

// Set the zoom level with an animation
mapView.setZoomLevel(16.0, animated: true)


Swift Package Manager

Add this repository as a dependency in your Package.swift:

// swift-tools-version:5.0

import PackageDescription

let package = Package(
    dependencies: [
        .package(url: "", .upToNextMajor(from: "1.2.0"))


Select File > Swift Packages > Add Package Dependency, then enter the following URL:

For more details, see Adding Package Dependencies to Your App.


MKZoomLevel is released under the MIT license. See LICENSE for details.


  • Swift Tools 5.0.0
View More Packages from this Author


  • None
Last updated: Sat May 25 2024 15:42:27 GMT-0900 (Hawaii-Aleutian Daylight Time)