我正在创建一个iOS应用程序,其中我有一些包含多个坐标的数据结构,我知道当前的用户位置。我想用TableView的单元格填充用户当前位置到TableView中位置的距离。
我想知道何时应该计算用户当前位置与TableView中所有位置之间的距离。应用程序启动时,我应该计算所有这些距离吗?当用户更改位置时我该怎么办?设置某种计时器以检查用户的位置是否发生变化,并在每次用户位置发生变化时重新计算距离?
我还应该注意,我让他们能够按距离对TableView进行排序。
提前致谢。
答案 0 :(得分:0)
您可以使用CLLocationManagerDelegate的locationManager:didUpdateLocations:Method。
当用户的位置更新时调用此方法,以便您可以调用方法在用户当前位置的tableview中显示数据。
下面是一些用于对arryOfLocation进行排序的代码。for (int i = 0; i < arrySortByLocation.count; i++)
{
//Current Location Details
NSMutableDictionary *dict = [[arrySortByLocation objectAtIndex:i] mutableCopy];
CLLocationDegrees latitude = [dict[@"city_lat"] doubleValue];
CLLocationDegrees longitude = [dict[@"city_lng"] doubleValue];
CLLocation *location = [[CLLocation alloc]initWithLatitude:latitude longitude:longitude];
CLLocationDistance distance = [appDele.userLocation distanceFromLocation:location];
dict[@"distance"] = [@(distance) stringValue];
//Storing as string since latitude and longitude is also string values
//Since its a dictionary storing as NSNumber is better
[arrySearchLocation setObject:dict atIndexedSubscript:i];
}
//sorting based on distance
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"distance.doubleValue" ascending:YES];
[arrySortByLocation sortUsingDescriptors:@[descriptor]];
}
希望这会对你有帮助..