2016-10-18 93 views
0

我不希望用戶縮小更多。有沒有辦法使用swift在Map kit中設置最大縮放級別?使用swift的iOS地圖中的最大縮放級別

+0

這可能是重複的嗎?http://stackoverflow.com/questions/1636868/is-there-way-to-limit -mkmapview-maximum-zoom-level – Prav

+1

@Prav它在目標c中解釋,但與swit沒有關係。所以我發佈這個問題 – Saranya

回答

5

請檢查這是否符合您的條件。

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) 
    } 
} 
+0

您的解決方案部分糾正 – Saranya

+1

您的解決方案部分正確,但是這種Int類型存在問題。例如,如果縮放級別爲13.1至13.4,則舍入爲13.因此,非常小的縮放無法完美運行 – Saranya

0

如何限制縮放級別:如果其他自定義地圖疊加與較高maximumZ =使用

class CustomMapOverlay: MKTileOverlay { 

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

}

或設定最低和在覆蓋FUNC URL maximumZ值(forTilePath路徑 。 17級別的話,那麼這個17的值就會覆蓋我們的15級的值。

相關問題