2016-10-18 3 views
0

Я не хочу, чтобы пользователь уменьшал масштаб. Есть ли способ установить максимальный уровень масштабирования в Map kit с помощью swift?Максимальный уровень масштабирования на карте 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:.

class CustomMapOverlay: MKTileOverlay { 

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

}

или установить минимальные и значение maximumZ в переопределении Func URL (forTilePath пути Если другие пользовательские карты наложения используются с более maximumZ = 17, то это значение 17 переопределит наше значение уровня 15.

Смежные вопросы