/MKZoomLevel

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

Primary LanguageSwiftMIT LicenseMIT

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

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.

Features

  • 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.

Usage

import MapKit
import MKZoomLevel

let mapView = MKMapView()

// Get the zoom level
mapView.zoomLevel

// Set the zoom level
mapView.zoomLevel = 16.0

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

Installation

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: "https://github.com/stleamist/MKZoomLevel.git", .upToNextMajor(from: "1.2.0"))
    ],
    ...
)

Xcode

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

https://github.com/stleamist/MKZoomLevel.git

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

License

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