【问题标题】:Accurate geolocation range variables准确的地理位置范围变量
【发布时间】:2014-12-15 02:13:18
【问题描述】:

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

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

我的应用将定位可能是有用信息的城市。

【问题讨论】:

    标签: ios iphone swift geolocation


    【解决方案1】:

    Core Location 提供的位置准确性取决于许多因素,尤其是

    • GPS 信号质量;这些在室内或地下可能会退化或不存在。市中心的大型建筑物也会反射这些信号,导致位置不准确
    • 已知 WiFi 网络的可用性
    • 位置服务已启用多长时间

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

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

    【讨论】:

      【解决方案2】:

      以下示例说明了如何为您的应用获取准确的地理位置坐标。就像保罗说的

      "默认值为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)
      
          }
      

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2017-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-19
        • 2018-09-27
        • 1970-01-01
        • 2019-03-03
        • 1970-01-01
        相关资源
        最近更新 更多