2015-04-03 64 views
1

我正在创建一个iOS应用程序,其中包含一些包含多个坐标的数据结构,并且我知道当前的用户位置。我想用从用户当前位置到TableView中位置的距离来填充TableView的单元格。与UITableView单元格和当前位置的距离

我想知道什么时候应该计算用户当前位置和TableView中所有位置之间的距离。我应该在应用程序启动时计算全部这些距离吗?用户更改位置时应该怎么做?设置某种计时器来检查用户的位置是否改变,并在每次用户的位置改变时重新计算距离?

我也应该注意到,我给他们按距离排序这个TableView的能力。

在此先感谢。

+0

有啥问题? – 2015-04-03 05:25:23

+0

我问我是否应该在应用程序开始时或在查看表视图中的特定位置时计算从当前位置到表视图中所有位置的所有距离?何时应该在用户旅行时更新这些距离? – user2253546 2015-04-03 05:28:56

回答

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]]; 
} 

希望这将帮助你..

+0

谢谢你的洞察力。所以我应该重新计算用户位置变化并重新排序时的距离?有没有办法在重新计算和排序之前检查它们离他们最近的位置有一段距离? – user2253546 2015-04-10 18:07:54

+0

您可以使用CLLocationManagerDelegate的locationManager:didUpdateLocations:在重新计算排序之前您可以做任何想做的事情的方法。 – 2015-04-12 08:11:40

相关问题