MapKit Anotaciones y la ubicación del usuario

votos
2

He seguido este tutorial para hacer mi primera aplicación:

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

Realmente me gustaría saber cómo ordenar las anotaciones en la tabla en orden de distancia al usuario (la anotación más cercano es el primero en la mesa) ¿Cómo es posible hacer eso?

Yo entiendo que tengo que usar el CLLocation para encontrar la ubicación del usuario, pero luego no tengo ni idea.

¿Podría alguien ayudarme?

Aclamaciones,

Gracias de antemano por su ayuda apreció mucho,

EDIT: He detalles añadidos:

los datos no está en una matriz, que se implementa en RootViewController.m en esta forma:

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

... y así. ¿Cómo es posible hacerlo entonces?

Puede encontrar el código fuente aquí:

icodeblog.com/wp-content/uploads/2009/09/iCodeMap.zip

teddafan

Publicado el 08/05/2010 a las 19:06
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
3

En una CLLocationse puede utilizar

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

para calcular la distancia de un objeto de otro. En este caso, es de suponer que sea la ubicación actual del usuario.

Si los datos están en una NSArrayse puede utilizar sortedArrayUsingFunctionpara llamar a una función de ayuda que llama a este método.

Respondida el 08/05/2010 a las 19:40
fuente por usuario

votos
1

Bucle a través de los CLLocations y encontrar la distancia entre ellos y su ubicación actual.

A continuación, utilice su propio algoritmo de ordenación para ordenar las distancias que está teniendo en una matriz.

for (CLLocation *loc in locations) {
  [distances addobject:[currentLocation distanceFromLocation:loc]];
}
[distances sort]; /* Own sorting algorithm */
[yourTable reloadData];
Respondida el 04/03/2011 a las 08:54
fuente por usuario

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