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

时间:2016-10-18 16:04:21

标签: ios mapkit swift3

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

2 个答案:

答案 0 :(得分: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)
    }
}

答案 1 :(得分:-1)

如何限制zoomlevel:

class CustomMapOverlay: MKTileOverlay {

.
init() {
  self.minimumZ = 3
  self.maximumZ = 15
}

}

或在override func url中设置min和maximumZ值(forTilePath路径。 如果使用其他自定义地图叠加层同时使用更高的最大值Z = 17,则此17值将覆盖我们的15级值。