在 Swift(核心位置)中使用数组简化代码
Simplifying code using arrays in Swift (core location)
我正在做一个小项目:如果人在给定坐标附近,它会输出 "Hello"。它正在工作,但我认为如果我继续制作这么多变量,代码太多了。有没有办法组织它或使其更容易添加坐标。我尝试使用数组但无法正常工作。什么可能是最好的解决方案?我对 Swift 语法非常陌生。非常感谢任何帮助。
let addressLocation:CLLocation = CLLocation(latitude: 37.334421, longitude: -122.037987)
let addressLocation2:CLLocation = CLLocation(latitude: 37.334395, longitude: -122.041173)
let meters:CLLocationDistance = location!.distanceFromLocation(addressLocation)
let meters2:CLLocationDistance = location!.distanceFromLocation(addressLocation2)
if (meters <= 50.00000000 || meters2 <= 50.0000000){
print("Hello")
}else{
print("No")
}
这就是您使用数组保存位置的方式。
var location = CLLocation(latitude: 37.334421, longitude: -122.037987)
var locations:[CLLocation] = [CLLocation(latitude: 37.334421, longitude: -122.037987),
CLLocation(latitude: 37.334395, longitude: -122.041173)]
var distances = locations.map{location.distanceFromLocation([=10=])}
let maxDistance = 50.0
if (distances.contains{[=10=] < maxDistance}) {
print("Hello")
} else {
print("No")
}
如果需要,您可以使用 locations.filter({ location!.distanceFromLocation([=11=]) < maxDistance })
获取所有附近位置的数组,但是,为了您的目的,这是我能想到的最简单的方法:
var locations = [CLLocation(latitude: 37.334421, longitude: -122.037987),
CLLocation(latitude: 37.334395, longitude: -122.041173)]
let maxDistance = 50.0
if locations.contains({ location!.distanceFromLocation([=10=]) < maxDistance }) {
print("Hello")
} else {
print("No close locations")
}
这就是您实现接收给定位置、地址列表并执行检查的函数的方式。
func check(location:CLLocation?, addresses:[CLLocation]) {
guard let location = location else { return }
if (addresses.contains { [=10=].distanceFromLocation(location) < 50 }) {
print("Hello")
} else {
print("No")
}
}
我正在做一个小项目:如果人在给定坐标附近,它会输出 "Hello"。它正在工作,但我认为如果我继续制作这么多变量,代码太多了。有没有办法组织它或使其更容易添加坐标。我尝试使用数组但无法正常工作。什么可能是最好的解决方案?我对 Swift 语法非常陌生。非常感谢任何帮助。
let addressLocation:CLLocation = CLLocation(latitude: 37.334421, longitude: -122.037987)
let addressLocation2:CLLocation = CLLocation(latitude: 37.334395, longitude: -122.041173)
let meters:CLLocationDistance = location!.distanceFromLocation(addressLocation)
let meters2:CLLocationDistance = location!.distanceFromLocation(addressLocation2)
if (meters <= 50.00000000 || meters2 <= 50.0000000){
print("Hello")
}else{
print("No")
}
这就是您使用数组保存位置的方式。
var location = CLLocation(latitude: 37.334421, longitude: -122.037987)
var locations:[CLLocation] = [CLLocation(latitude: 37.334421, longitude: -122.037987),
CLLocation(latitude: 37.334395, longitude: -122.041173)]
var distances = locations.map{location.distanceFromLocation([=10=])}
let maxDistance = 50.0
if (distances.contains{[=10=] < maxDistance}) {
print("Hello")
} else {
print("No")
}
如果需要,您可以使用 locations.filter({ location!.distanceFromLocation([=11=]) < maxDistance })
获取所有附近位置的数组,但是,为了您的目的,这是我能想到的最简单的方法:
var locations = [CLLocation(latitude: 37.334421, longitude: -122.037987),
CLLocation(latitude: 37.334395, longitude: -122.041173)]
let maxDistance = 50.0
if locations.contains({ location!.distanceFromLocation([=10=]) < maxDistance }) {
print("Hello")
} else {
print("No close locations")
}
这就是您实现接收给定位置、地址列表并执行检查的函数的方式。
func check(location:CLLocation?, addresses:[CLLocation]) {
guard let location = location else { return }
if (addresses.contains { [=10=].distanceFromLocation(location) < 50 }) {
print("Hello")
} else {
print("No")
}
}