无法将类型 'CLLocationCoordinate2D' 的值转换为预期的参数类型 'CLLocationDegrees'(又名 'Double')

Cannot convert value of type 'CLLocationCoordinate2D' to expected argument type 'CLLocationDegrees' (aka 'Double')

我已经获取了用户的当前位置,但在这一行收到此错误

let region : MKCoordinateRegion = MKCoordinateSpanMake(myLocation, span)

我在上一行 myLocation 收到错误消息

Cannot convert value of type 'CLLocationCoordinate2D' to expected argument type 'CLLocationDegrees' (aka 'Double')

我认为可能存在类型转换问题或类似问题。

我应该如何处理这个错误我研究了很多例子,但 none 帮助了我。

import UIKit
import MapKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

let manager = CLLocationManager()

@IBOutlet weak var myMap: MKMapView!

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {


    let location = locations[0]

    let span : MKCoordinateSpan = MKCoordinateSpanMake(1, 1)
    let myLocation : CLLocationCoordinate2D = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
    let region : MKCoordinateRegion = MKCoordinateSpanMake(myLocation, span)



    myMap.setRegion(region, animated: true)

    self.myMap.showsUserLocation = true


}

override func viewDidLoad() {
    super.viewDidLoad()

    manager.delegate = self
    manager.desiredAccuracy = kCLLocationAccuracyBest
    manager.requestWhenInUseAuthorization()
    manager.startUpdatingLocation()

    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}

你想要 MKCoordinateRegionMake,而不是 MKCoordinateSpanMake

您还应该进行许多其他修复:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let location = locations[0]

    let span = MKCoordinateSpanMake(0.01, 0.01)
    let myLocation = location.coordinate
    let region = MKCoordinateRegionMake(myLocation, span)

    myMap.setRegion(region, animated: true)

    self.myMap.showsUserLocation = true
}