@雾迈斯特
我认为这是一个错误,必须正确设置 DBL_MAX 和分配。
第一:使用 DBL_MAX 而不是 DOUBLE_MAX。
DBL_MAX 是 math.h 中的 #define 变量。
它是最大可表示的有限浮点(双)数的值。
第二:在您的情况下,您的分配是错误的:
if (distance < smallestDistance) {
distance = smallestDistance;
closestLocation = location;
}
你必须这样做:
if (distance < smallestDistance) {
smallestDistance = distance;
closestLocation = location;
}
不同之处在于将距离值分配给 minimumDistance,而不是相反。
最终结果:
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);
你能确认这是正确的吗?