我有一个地图工具包视图,当应用加载时,它会获取用户当前位置并跟踪它。然后它运行一个功能,专注于用户位置,我也链接到一个按钮,这样用户可以导航,然后回到他们的位置范围。
在此功能中,我将跨度设置为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)
}
答案 0 :(得分:0)
根据Apple文档:
设置新区域时,地图可能会调整区域中的值 参数,以便它精确地适合地图的可见区域。这个 是正常的,并确保region属性中的值 始终反映地图的可见部分。但是,它确实意味着 如果你在调用之后立即获得该属性的值 方法,返回的值可能与您设置的值不匹配。
因此,当您应用span时,它会创建最适合您请求的区域。它与您要求的内容不完全相同。