准确的地理定位范围变量

时间:2014-12-15 02:13:18

标签: ios iphone swift geolocation

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

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

我的应用会针对可能是有用信息的城市。

2 个答案:

答案 0 :(得分:2)

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

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

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

将位置更新发送到didUpdateLocations:委托方法后,您可以检查horizontalAccuracy属性,以获取该位置位置准确性的指示。

答案 1 :(得分: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)

    }

希望这有帮助!