私はあなたが現在の場所にズームするときに開くアプリケーションを構築しようとしています。以下は私のコードです。SWIFT:起動時に現在の場所にズームする方法を教えてください。
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)
}
}
このコードでは問題は解決しません。これは、ユーザーの所在地を取得するために場所の認可を受けてから時間がないためです。私は、アプリケーションがlocationを持っているのを待ってからzoomToUserLocation関数を呼び出す関数を書くことを考えています。私はすでにdo-whileループでこれを試しましたが、うまくいきませんでした。私は遅れを設定することができますが、それは特定の時間にズームが行われ、その代わりにズームができるだけ早く行われることを意味します。私は目的Cでこれに対する解決策を見つけましたが、それを翻訳することはできませんでした。
ねえ、私はそれを呼んでいるdidChangeAuthorizationとdidUpdateLocationsの両方でと両方とも、開始時にwriteと呼ばれるのは、現在のユーザー位置に対してnilの値を持っています。 –