tst*_*eve 8 google-maps cllocationmanager ios cllocationdistance swift
在这里发布的问题中,用户问:
我有一个充满经度和纬度的阵列.我的用户位置有两个双变量.我想测试用户位置与阵列之间的距离,以查看最接近的位置.我该怎么做呢?
这将获得2个位置之间的距离,但是要了解我如何针对一系列位置进行测试.
作为回应,他得到了以下代码:
NSArray *locations = //your array of CLLocation objects
CLLocation *currentLocation = //current device Location
CLLocation *closestLocation;
CLLocationDistance smallestDistance = DBL_MAX; // set the max value
for (CLLocation *location in locations) {
CLLocationDistance distance = [currentLocation distanceFromLocation:location];
if (distance < smallestDistance) {
smallestDistance = distance;
closestLocation = location;
}
}
NSLog(@"smallestDistance = %f", smallestDistance);
Run Code Online (Sandbox Code Playgroud)
我在我正在处理的应用程序中遇到完全相同的问题,我认为这段代码可以完美地运行.但是,我正在使用Swift,此代码在Objective-C中.
我唯一的问题是:它应该如何看待Swift?
谢谢你的帮助.我是所有这一切的新手,看到Swift中的这段代码可能是一个很大的问题.
zer*_*nna 22
对于Swift 3,我创建了一小段"功能"代码:
let coord1 = CLLocation(latitude: 52.12345, longitude: 13.54321)
let coord2 = CLLocation(latitude: 52.45678, longitude: 13.98765)
let coord3 = CLLocation(latitude: 53.45678, longitude: 13.54455)
let coordinates = [coord1, coord2, coord3]
let userLocation = CLLocation(latitude: 52.23678, longitude: 13.55555)
let closest = coordinates.min(by:
{ $0.distance(from: userLocation) < $1.distance(from: userLocation) })
Run Code Online (Sandbox Code Playgroud)
And*_*tta 18
var closestLocation: CLLocation?
var smallestDistance: CLLocationDistance?
for location in locations {
let distance = currentLocation.distanceFromLocation(location)
if smallestDistance == nil || distance < smallestDistance {
closestLocation = location
smallestDistance = distance
}
}
print("smallestDistance = \(smallestDistance)")
Run Code Online (Sandbox Code Playgroud)
或作为一种功能:
func locationInLocations(locations: [CLLocation], closestToLocation location: CLLocation) -> CLLocation? {
if locations.count == 0 {
return nil
}
var closestLocation: CLLocation?
var smallestDistance: CLLocationDistance?
for location in locations {
let distance = location.distanceFromLocation(location)
if smallestDistance == nil || distance < smallestDistance {
closestLocation = location
smallestDistance = distance
}
}
print("closestLocation: \(closestLocation), distance: \(smallestDistance)")
return closestLocation
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9175 次 |
| 最近记录: |