我得到以下函數以獲得最接近用戶位置的對象。有沒有其他方法?我想讓我的代碼更清晰。是否可以使用NSPredicate
解決此問題?對象MyZone
包含CLLocationCoordinate2D
。獲得最接近元素的最佳方法
- (MyZone *)closestBaseAgglomeration {
CLLocation *userLocation = self.locationManager.location;
NSArray *zoneArr = //Get zone array here
CLLocationDistance minDist = CGFLOAT_MAX;
MyZone *closestZone = nil;
for (int it=0; it<zoneArr.count; it++) {
MyZone *curZone = [zoneArr objectAtIndex:it];
CLLocationCoordinate2D curCoordinate = curZone.coordinateRegion.center;
CLLocation *curLocation = [[CLLocation alloc] initWithLatitude:curCoordinate.latitude longitude:curCoordinate.longitude];
CLLocationDistance actDist = [curLocation distanceFromLocation:userLocation];
if (minDist > actDist) {
closestZone = curZone;
minDist = actDist;
}
}
return closestZone;
}
看起來相當清楚,並且幾乎是唯一的方法,如果你是你的對象安排在一維數組。 – trojanfoe
您可以將返回的類型更改爲「ELBaseAgglomeration」,因爲這是您實際返回的內容。 – tilo