按照当前位置与CLLocationCoordinate2D的接近程度对结构体的字典进行排序
创始人
2024-08-23 15:30:21
0

要按照位置与CLLocationCoordinate2D的接近程度对结构体的字典进行排序,可以使用Swift的sorted方法和CLLocationCoordinate2D的distance方法来实现。

首先,定义一个结构体包含位置信息和其他指定的属性:

struct Location {
    var coordinate: CLLocationCoordinate2D
    var name: String
    // 其他属性...
}

然后,创建一个包含Location结构体的字典:

var locations: [Int: Location] = [
    1: Location(coordinate: CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194), name: "San Francisco"),
    2: Location(coordinate: CLLocationCoordinate2D(latitude: 34.0522, longitude: -118.2437), name: "Los Angeles"),
    3: Location(coordinate: CLLocationCoordinate2D(latitude: 29.7604, longitude: -95.3698), name: "Houston")
]

接下来,定义一个函数来计算两个CLLocationCoordinate2D之间的距离:

func distance(from: CLLocationCoordinate2D, to: CLLocationCoordinate2D) -> CLLocationDistance {
    let fromLocation = CLLocation(latitude: from.latitude, longitude: from.longitude)
    let toLocation = CLLocation(latitude: to.latitude, longitude: to.longitude)
    return fromLocation.distance(from: toLocation)
}

最后,使用sorted方法对字典进行排序,根据当前位置与每个Location的coordinate距离的接近程度进行比较:

let currentLocation = CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194)
let sortedLocations = locations.sorted { (location1, location2) -> Bool in
    let distance1 = distance(from: currentLocation, to: location1.value.coordinate)
    let distance2 = distance(from: currentLocation, to: location2.value.coordinate)
    return distance1 < distance2
}

for (index, location) in sortedLocations {
    print("\(index): \(location.name)")
}

以上代码将按照当前位置与每个位置的接近程度对字典进行排序,并将结果打印出来。请根据实际需要修改代码中的位置坐标和其他属性。

相关内容

热门资讯

揭秘几款(德扑之星禁止模拟器)... WePoker透视辅助版本稳定性对比与推荐‌:揭秘几款(德扑之星禁止模拟器)软件透明挂(辅助挂)确实...
七分钟了解!哈糖大菠萝平台正规... 1、七分钟了解!哈糖大菠萝平台正规(辅助挂)确实真的有挂(详细教程)(有挂教学)-哔哩哔哩;详细教程...
终于清楚(德扑之星让系统给好牌... 终于清楚(德扑之星让系统给好牌)软件透明挂(辅助挂)果真是真的有挂(有挂详情)-哔哩哔哩;德扑之星让...
大神推荐!云扑克德州PK(辅助... WePoke高级策略深度解析‌;大神推荐!云扑克德州PK(辅助挂)原来真的有挂(详细教程)(有挂规律...
推荐一款!扑克之城那假(透视)... 推荐一款!扑克之城那假(透视)的确是真的有挂(详细教程)(有挂教程)-哔哩哔哩;玩家必备必赢加哟《1...
透明挂透视(pokenow有挂... 透明挂透视(pokenow有挂)软件透明挂(透视)其实真的有挂(有挂介绍)-哔哩哔哩是一款可以让一直...
两分钟了解(智星德州菠萝有挂)... 两分钟了解(智星德州菠萝有挂)透视辅助(辅助挂)确实是真的有挂(有挂介绍)-哔哩哔哩;智星德州菠萝有...
总算明白!fishpoker俱... 此外,数据分析德州(fishpoker俱乐部有挂)辅助神器app还具备辅助透视行为开挂功能,通过对客...
透视代打(智星德州菠萝有挂)软... 您好,智星德州菠萝有挂这款游戏可以开挂的,确实是有挂的,需要了解加微【285696317】很多玩家在...
实测发现!红龙扑克会作假(辅助... 实测发现!红龙扑克会作假(辅助挂)原来是真的有挂(详细教程)(有挂攻略)-哔哩哔哩1、很好的工具软件...