2016-10-18 5 views
0

私はユーザーにズームアウトをさせたくありません。 swiftを使用して最大ズームレベルをMap kitに設定する方法はありますか?スウィフトを使用したiOSマップの最大ズームレベル

+0

これは重複していますか?http://stackoverflow.com/questions/1636868/is-there-way-to-limit -mkmapview-maximum-zoom-level – Prav

+1

@Pravこれは客観的なcで説明されていますが、スイッチには関係しません。だから私はこの質問を投稿しています – 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

zoomlevel制限する方法:他のカスタムマップオーバーレイが高いmaximumZ =と共に使用される場合

class CustomMapOverlay: MKTileOverlay { 

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

}

またはセット分およびオーバーライドFUNC URLにmaximumZ値(forTilePathパス を。 17レベルにすると、この17の値は15レベルの値を上書きします。

関連する問題