【发布时间】:2016-12-13 16:41:56
【问题描述】:
我正在尝试构建一个应用程序,当您打开它时它会缩放到您当前的位置。以下是我目前的代码。
class MapVC: UIViewController {
@IBOutlet weak var mapView: MKMapView!
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
mapView.zoomToUserLocation()
}
}
extension MKMapView {
func zoomToUserLocation() {
print(userLocation.location?.coordinate)
guard let coordinate = userLocation.location?.coordinate else { return }
let region = MKCoordinateRegionMakeWithDistance(coordinate, 10000, 10000)
setRegion(region, animated: true)
}
}
此代码不能解决问题。我相信这是因为应用程序在收到位置授权后没有时间获取用户位置。我正在寻找一个函数来等待应用程序有一个位置,然后调用 zoomToUserLocation 函数。我已经用一个不起作用的do-while循环尝试了这个。我可以设置延迟,但这意味着缩放是在特定时间完成的,而我希望尽快完成缩放。我在目标 C 中找到了解决方案,但无法翻译。
【问题讨论】:
标签: swift xcode mapkit cllocationmanager