准确的地理位置范围变量



如何为我的应用程序获取准确的地理位置坐标。在某些情况下,我需要知道手机在哪里,错误~8米。

快速位置管理器是否处理所有算法内容?可以做得更准确吗?

我的应用程序将定位城市,这可能是一个有用的信息。

核心位置提供的位置精度将取决于许多因素,特别是

  • GPS信号的质量;这些信号在室内或地下可能会降低或不存在。 市中心的大型建筑物也会反射这些信号,导致位置不准确
  • 已知 WiFi 网络的可用性
  • 定位服务处于活动状态的时间

您可以使用 CLLocationManager 实例上的 desiredAccuracy 属性请求特定级别的位置精度。 默认值为 kCLLocationAccuracyBest ,这是最高水平的精度,但由于 GPS 信号的限制,通常不会优于 10m。

将位置更新传递到 didUpdateLocations: 委托方法时,您可以检查 horizontalAccuracy 属性以获取位置位置精度的指示。

下面是如何获取应用的准确地理位置坐标的示例。 就像保罗说的

"默认值为 kCLLocationAccuracyBest ,这是最高级别的准确性"

但是,如果您愿意,您也可以使用其他方法,例如kCLLocationAccuracyNearestTenMeters

import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {
@IBOutlet var map: MKMapView!
var manager:CLLocationManager!

override func viewDidLoad() {
    super.viewDidLoad()
    manager = CLLocationManager()
    manager.delegate = self
    manager.desiredAccuracy = kCLLocationAccuracyBest
    manager.requestWhenInUseAuthorization()
    manager.startUpdatingLocation()

}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    print(locations)
    let userLocation:CLLocation = locations[0]
    let latitude:CLLocationDegrees = userLocation.coordinate.latitude
    let longitude:CLLocationDegrees = userLocation.coordinate.longitude
    let latDelta:CLLocationDegrees = 0.05
    let lonDelta:CLLocationDegrees = 0.05
    let span:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, lonDelta)
    let location:CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)
    let region:MKCoordinateRegion = MKCoordinateRegionMake(location, span)
    map.setRegion(region, animated: false)
    }

希望这有帮助!

最新更新