将 Double 转换为 CLLocationDegrees [SWIFT]
Convert Double to CLLocationDegrees [SWIFT]
我正在尝试将两个数组转换为 CLLocationDegrees,然后将它们合并为一个数组 (CLLocationCoordinate2D
)。
所以让我们从头开始:
我有两个从 Firestore 收到的 Double 类型的数组。 (一个带有纬度,一个带有经度)。我正在尝试将这些数组转换为 CLLocationDegrees,然后将它们合并为一个数组,该数组的类型应为 CLLocationCoordiante2D
.
在代码的顶部(在 class 中)我有这个:
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
}
}
我收到的警告是:
Cast from '[Double]' to unrelated type 'CLLocationDegrees' (aka 'Double') always fails
如果我打印 "locations" 它 returns:
[0, 0]
有人知道如何解决这个问题吗?请告诉我。
如果你不喜欢这里,至少在评论中写下原因。
请仔细阅读警告。
latitude
和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: [=10=].0, longitude: [=10=].1)}
甚至更短
locations = zip(latitude, longitude).map(CLLocationCoordinate2D.init)
如果条件失败,断言行会导致致命错误。
我正在尝试将两个数组转换为 CLLocationDegrees,然后将它们合并为一个数组 (CLLocationCoordinate2D
)。
所以让我们从头开始:
我有两个从 Firestore 收到的 Double 类型的数组。 (一个带有纬度,一个带有经度)。我正在尝试将这些数组转换为 CLLocationDegrees,然后将它们合并为一个数组,该数组的类型应为 CLLocationCoordiante2D
.
在代码的顶部(在 class 中)我有这个:
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
}
}
我收到的警告是:
Cast from '[Double]' to unrelated type 'CLLocationDegrees' (aka 'Double') always fails
如果我打印 "locations" 它 returns:
[0, 0]
有人知道如何解决这个问题吗?请告诉我。 如果你不喜欢这里,至少在评论中写下原因。
请仔细阅读警告。
latitude
和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: [=10=].0, longitude: [=10=].1)}
甚至更短
locations = zip(latitude, longitude).map(CLLocationCoordinate2D.init)
如果条件失败,断言行会导致致命错误。