我按照本教程制作了我的第一个应用程序:
http://icodeblog.com/2009/12/21/introduction-to-mapkit-in-iphone-os-3-0/
我真的想知道如何按照与用户的距离顺序对表中的注释进行排序(最近的注释是表中的第一个注释)如何才能这样做?
我知道我必须使用CLLocation来查找用户的位置但我不知道。
有人可以帮助我吗?
干杯,
提前感谢您的帮助,
编辑:我添加了详细信息:数据不在数组中,它以RootViewController.m的形式实现:
-(void)loadOurAnnotations
{
CLLocationCoordinate2D workingCoordinate;
workingCoordinate.latitude = 40.763856;
workingCoordinate.longitude = -73.973034;
iCodeBlogAnnotation *appleStore1 = [[iCodeBlogAnnotation alloc]
initWithCoordinate:workingCoordinate];
[appleStore1 setTitle:@"Apple Store 5th Ave."];
[appleStore1 setSubtitle:@"Apple's Flagship Store"];
[appleStore1 setAnnotationType:iCodeBlogAnnotationTypeApple];
[mapView addAnnotation:appleStore1];
......等等。那怎么可能呢?
您可以在此处找到源代码:
icodeblog.com/wp-content/uploads/2009/09/iCodeMap.zip
teddafan
答案 0 :(得分:3)
在CLLocation
上,您可以使用
- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location
计算物体与另一物体的距离。在这种情况下,它可能是用户的当前位置。
如果数据在NSArray
中,您可以使用sortedArrayUsingFunction
来调用调用此方法的辅助函数。
答案 1 :(得分:1)
循环访问CLLocations并找到它们与您当前位置之间的距离。
然后使用您自己的排序算法对数组中的距离进行排序。
for (CLLocation *loc in locations) {
[distances addobject:[currentLocation distanceFromLocation:loc]];
}
[distances sort]; /* Own sorting algorithm */
[yourTable reloadData];