何时使用 MKMapView 的 MKUserTrackingMode 与位置管理器的开始更新位置?
When to use MKMapView's MKUserTrackingMode vs Location Manager's start updating location?
我正在制作一个跟踪用户位置的应用程序,目前我正在使用以下代码执行此操作(一旦用户已授权跟踪其位置):
override func viewDidLoad() {
super.viewDidLoad()
// set map View delegate
mapView.delegate = self
// turn on user tracking mode to follow user
if tracking == true {
mapView.userTrackingMode = MKUserTrackingMode.follow
} else {
mapView.userTrackingMode = MKUserTrackingMode.none
}
}
这似乎可以很好地跟踪用户的位置,我想知道何时使用它以及何时使用 locationManager.startUpdatingLocation()
或 stopUpdatingLocation()
。
当您的唯一目的是更新地图时,您会使用 userTrackingMode
。但有时我们希望用户位置用于其他目的(例如将其记录在某些数据库中,使用它来查看我们可能提供哪些商店和/或基于位置的特价商品等)。事实上,当地图可能根本不显示或至少尚未显示时,我们可能会使用 CLLocationManager
。
因此,如果您只关心更新地图,那么您可以使用 userTrackingMode
。但是,如果您关心独立于任何视觉地图的位置,请使用 CLLocationManager
。
我正在制作一个跟踪用户位置的应用程序,目前我正在使用以下代码执行此操作(一旦用户已授权跟踪其位置):
override func viewDidLoad() {
super.viewDidLoad()
// set map View delegate
mapView.delegate = self
// turn on user tracking mode to follow user
if tracking == true {
mapView.userTrackingMode = MKUserTrackingMode.follow
} else {
mapView.userTrackingMode = MKUserTrackingMode.none
}
}
这似乎可以很好地跟踪用户的位置,我想知道何时使用它以及何时使用 locationManager.startUpdatingLocation()
或 stopUpdatingLocation()
。
当您的唯一目的是更新地图时,您会使用 userTrackingMode
。但有时我们希望用户位置用于其他目的(例如将其记录在某些数据库中,使用它来查看我们可能提供哪些商店和/或基于位置的特价商品等)。事实上,当地图可能根本不显示或至少尚未显示时,我们可能会使用 CLLocationManager
。
因此,如果您只关心更新地图,那么您可以使用 userTrackingMode
。但是,如果您关心独立于任何视觉地图的位置,请使用 CLLocationManager
。