我不希望用户缩小更多。有没有办法使用swift在Map kit
设置最大缩放级别?
答案 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级值。