当前位置范围在地图工具包视图中更改为随机数

时间:2017-09-18 02:55:38

标签: ios swift mapkit

我有一个地图工具包视图,当应用加载时,它会获取用户当前位置并跟踪它。然后它运行一个功能,专注于用户位置,我也链接到一个按钮,这样用户可以导航,然后回到他们的位置范围。

在此功能中,我将跨度设置为0.01,但是当我打印跨度值时,它不同。当应用程序第一次运行并聚焦时,纬度范围为0.00745918279325508

然后,当我点击运行完全相同功能的焦点按钮时,lat跨度打印在0.0102124663369167并且明显缩小

为什么我已经将它设置为0.01时才这样做?这是我的代码:

    @IBAction func focusLocation(sender: UIButton)
    {
        snapLocation()
    }

    var locationManager: CLLocationManager!

    override func viewDidLoad()
    {
        super.viewDidLoad()

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

    func snapLocation()
    {
        let currentLocation = locationManager.location?.coordinate

        let latitude:CLLocationDegrees = (currentLocation?.latitude)!
        let longitude:CLLocationDegrees = (currentLocation?.longitude)!

        let latDelta:CLLocationDegrees = 0.01
        let lonDelta:CLLocationDegrees = 0.01

        let span = MKCoordinateSpanMake(latDelta, lonDelta)
        let location = CLLocationCoordinate2DMake(latitude, longitude)
        let region = MKCoordinateRegionMake(location, span)

        mapkitView.setRegion(region, animated: true)
    }

1 个答案:

答案 0 :(得分:0)

根据Apple文档:

  

设置新区域时,地图可能会调整区域中的值   参数,以便它精确地适合地图的可见区域。这个   是正常的,并确保region属性中的值   始终反映地图的可见部分。但是,它确实意味着   如果你在调用之后立即获得该属性的值   方法,返回的值可能与您设置的值不匹配。

因此,当您应用span时,它会创建最适合您请求的区域。它与您要求的内容不完全相同。