MapKit Аннотация и местоположение пользователя

голоса
2

Я после этого учебника, чтобы сделать мое первое приложение:

http://icodeblog.com/2009/12/21/introduction-to-mapkit-in-iphone-os-3-0/

Я действительно хотел бы знать, как сортировать аннотации в таблице в порядке расстояния до пользователя (ближайший аннотаций является первым одна на столе) Как это можно сделать?

Я понимаю, что я должен использовать CLLocation найти местоположение пользователя, но я понятия не имею.

Может ли один помочь мне?

Ура,

Заранее спасибо за высокую оценку помощи,

EDIT: Я добавил детали:

данные не в массиве, он реализован в 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

Задан 08/05/2010 в 19:06
источник пользователем
На других языках...                            


2 ответов

голоса
3

Об одном CLLocationможно использовать

- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location

для вычисления расстояния объекта от другого. В этом случае, предположительно, будет текущее местоположение пользователя.

Если данные находятся в NSArrayвы можете использовать sortedArrayUsingFunctionдля вызова функции помощника , который вызывает этот метод.

Ответил 08/05/2010 в 19:40
источник пользователем

голоса
1

Петля через CLLocations и найти расстояние между ними и вашим текущим местоположением.

Тогда используйте свой собственный алгоритм сортировки для сортировки расстояния вы испытываете в массиве.

for (CLLocation *loc in locations) {
  [distances addobject:[currentLocation distanceFromLocation:loc]];
}
[distances sort]; /* Own sorting algorithm */
[yourTable reloadData];
Ответил 04/03/2011 в 08:54
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more