MapKit注释和用户位置

时间:2010-05-08 18:06:54

标签: iphone objective-c annotations mapkit

我按照本教程制作了我的第一个应用程序:

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

2 个答案:

答案 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];