我目前正在制作一个带有 map 的应用程序,该 map 应仅关注某个位置。我希望用户无法缩小或平移该区域,以便他们可以将注意力集中在我放置在该区域上的图像叠加层上。
为了让应用程序从我想要的位置开始,而不是一些随机 map ,我使用了 Ray Wenderlich 的教程:https://www.raywenderlich.com/425-mapkit-tutorial-overlay-views
我将如何根据上面教程中编写的代码完成我的任务?我已经完成了本教程,因此我正在寻求帮助来添加任何代码并确定要放置的位置和类型。
我发现有关此主题的其他教程没有帮助,因为它们适用于其他 map 类型,例如 Google map 或 MapBox。关于MapKit和MaximumZ的苹果网站也对我没有多大帮助。
我是 XCode 和 Swift 的初学者,之前对 Python 仅有一点经验。我希望限制缩放和用户对部分 map 的访问会更容易......
override func viewDidLoad() {
super.viewDidLoad()
let latDelta = park.overlayTopLeftCoordinate.latitude -
park.overlayBottomRightCoordinate.latitude
// Think of a span as a tv size, measure from one corner to another
let span = MKCoordinateSpanMake(fabs(latDelta), 0.0)
let region = MKCoordinateRegionMake(park.midCoordinate, span)
mapView.region = region
}
到目前为止,我使用一个矩形来限制我希望限制用户进入的区域,让应用程序在我想要的位置启动。
最佳答案
MKMapView 有一个委托(delegate) MKMapViewDelegate。该协议(protocol)有一个函数称为:
func mapViewDidChangeVisibleRegion(_:)
只要用户滚动或缩放 map ,就会调用此方法。在此方法中,您可以指定 map 的行为。例如,您可以设置希望 map 放大的特定区域并指定允许的最大缩放级别。
在函数mapViewDidChangeVisibleRegion(_:)中,您可以检查 map 可以放大到什么latitudeDelta和longitudeDelta。如果增量低于或高于某个水平,您可以通过设置区域来锁定缩放,如下所示:
func mapViewDidChangeVisibleRegion(_ mapView: MKMapView) {
if mapView.region.span.latitudeDelta < 0.4 {
regionSpan = MKCoordinateSpan(latitudeDelta: 0.4, longitudeDelta: 0.5)
let mapRegion = MKCoordinateRegion(center: self.centerCoordinate, span: self.regionSpan)
self.trackMapView.setRegion(mapRegion, animated: true)
}
}
关于ios - 如何限制 MapKit 中 Apple map 特定区域的平移和缩小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56939723/