使用swift在iOS地图中的最大缩放级别

Sar*_*nya 1 mapkit ios swift3

我不希望用户缩小更多.有没有办法在Map kit使用swift时设置最大缩放级别?

Pra*_*rav 7

请检查这是否符合您的条件.

import Foundation
import MapKit

class MapViewWithZoom: MKMapView {

    var zoomLevel: Int {
        get {
            return Int(log2(360 * (Double(self.frame.size.width/256) / self.region.span.longitudeDelta)) + 1);
        }

        set (newZoomLevel){
            setCenterCoordinate(self.centerCoordinate, zoomLevel: newZoomLevel, animated: false)
        }
    }

    private func setCenterCoordinate(coordinate: CLLocationCoordinate2D, zoomLevel: Int, animated: Bool){
        let span = MKCoordinateSpanMake(0, 360 / pow(2, Double(zoomLevel)) * Double(self.frame.size.width) / 256)
        setRegion(MKCoordinateRegionMake(centerCoordinate, span), animated: animated)
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您的解决方案部分正确,但此 Int 类型存在问题。例如,如果缩放级别是 13.1 到 13.4 被四舍五入到 13。所以非常小的缩放不能完美地工作 (2认同)