gpt4 book ai didi

SWIFT:如何让应用程序在启动时缩放到您当前的位置?

转载 作者:行者123 更新时间:2023-11-28 06:28:19 25 4
gpt4 key购买 nike

我正在尝试构建一个应用程序,当您打开它时,它会缩放到您的当前位置。到目前为止,下面是我的代码。

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 循环试过了,但没有用。我可以设置延迟,但这意味着缩放是在特定时间完成的,而我希望尽快完成缩放。我在 objective-c 中找到了解决方案,但无法翻译它。

最佳答案

此方法可能会有帮助 setUserTrackingMode(_:animated:) ,但我认为这不是您要找的。

可能最适合您的解决方案是实现 locationManager(_:didChangeAuthorization:) locationManager(_:didUpdateLocations:) CLLocationManager 上的代表。然后你打电话zoomToUserLocation()didUpdateLocations .

另一个观察结果是,您不应该为 viewDidLoad() 中的 map 设置动画。因为它还没有出现在屏幕上。这应该在 viewDidAppead() 中完成.

关于SWIFT:如何让应用程序在启动时缩放到您当前的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41126245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com