我正在尝试将两个数组转换为CLLocationDegrees,然后从那里将它们合并到一个数组(CLLocationCoordinate2D
)中。
所以让我们从头开始:
我有两个从Firestore收到的Double类型的数组。 (一个带有经度,另一个带有经度)。我正在尝试将这些数组转换为CLLocationDegrees,然后将它们合并为一个CLLocationCoordiante2D
类型的数组。
在代码的顶部(在该类中),我是这样的:
var latitude:[Double] = []
var longitude:[Double] = []
var locations: [CLLocationCoordinate2D] = []
在viewDidLoad之后,我创建了一个如下所示的函数:
func insertInMap()
{
if (CLLocationManager.locationServicesEnabled())
{
//WARNING BELOW
locations = [CLLocationCoordinate2D(latitude: latitude as! CLLocationDegrees, longitude: longitude as! CLLocationDegrees)]
print(locations)
//Insert the coordinates (In the correct order) into mapView.
//Draw a polyline between the coordinates
} else{
//Code here
}
}
我得到的警告是:
从“ [Double]”到不相关类型“ CLLocationDegrees”(也称为“ Double”)的投射始终失败
如果我打印“位置”,它将返回:
[0,0]
有人知道如何解决此问题吗?请告诉我。 如果您不喜欢这里,请至少在评论中写下原因。
答案 0 :(得分:2)
请仔细阅读警告。
longitude
和CLLocationCoordinate2D
都是数组,并且init
latitude
方法期望一个 longitude
和一个 zip
。
您可以使用map
和assert(latitude.count == longitude.count, "Both arrays must contain the same number of items")
locations = zip(latitude, longitude).map{CLLocationCoordinate2D(latitude: $0.0, longitude: $0.1)}
创建坐标数组
locations = zip(latitude, longitude).map(CLLocationCoordinate2D.init)
或更短
Object doesn't support this property or method (Error 438)
如果条件失败,则断言行会导致致命错误。