如何在IOS Swift中获取准确的当前位置坐标纬度/经度

问题描述

我在IOS Swift中使用CoreLocation获取当前坐标,但在某些情况下,它使我最接近所需位置,而有时坐标距我的给定地址数米。请检查我正在使用的代码,是否还有其他方法可以获取准确的当前位置坐标??

我的代码是:

import CoreLocation

var locationManager:CLLocationManager!
var userLat = 0.0
var userLong = 0.0

override func viewDidLoad() {
    super.viewDidLoad() 

self.locationManager = CLLocationManager()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.requestAlwaysAuthorization()
    
if CLLocationManager.locationServicesEnabled(){
   self.locationManager.startUpdatingLocation()
     }

 }

func locationManager(_ manager: CLLocationManager,didUpdateLocations locations: 
 [CLLocation]) {
    
    guard let userLocation :CLLocation = locations.first else{return}
    
    userLat = userLocation.coordinate.latitude
    userLong = userLocation.coordinate.longitude
    
    //current location
    print("current location latitude is :%@",userLat)
    print("current location longitude is :%@",userLong)
        
}

func locationManager(_ manager: CLLocationManager,didFailWithError error: Error) {
    
    print(Error: \(error)")

}

请帮助我一段时间,当前位置准确无误,有时位置太远了。谢谢

解决方法

假设您的应用程序的用户允许您使用精确的位置,那么您仍然需要考虑以下事实:所提供的位置仅与硬件可以提供的位置一样准确。系统需要一些时间才能准确定位该位置,随着系统预热,您可能会看到多次致电didUpdateLocations

您可以在horizontalAccuracy上使用verticalAccuracyCLLocation来决定如何进行职位更新。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...