MapKit annotazioni e la posizione dell'utente

voti
2

Ho seguito questo tutorial per fare la mia prima app:

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

Mi piacerebbe davvero sapere come ordinare le annotazioni nella tabella in ordine di distanza per l'utente (l'annotazione più vicino è il primo sul tavolo) Come è possibile farlo?

Capisco che devo usare il CLLocation per trovare la posizione dell'utente, ma poi non ho idea.

Qualcuno può aiutarmi?

Saluti,

Grazie in anticipo per il vostro aiuto molto apprezzato,

EDIT: ho aggiunto i dettagli:

i dati non in una matrice, viene implementato in RootViewController.m in questa 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];

... e così via. Come è possibile farlo allora?

È possibile trovare il codice sorgente qui:

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

teddafan

È pubblicato 08/05/2010 alle 19:06
fonte dall'utente
In altre lingue...                            


2 risposte

voti
3

In una CLLocationsi può usare

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

per calcolare la distanza di un oggetto da un altro. In questo caso, sarebbe presumibilmente posizione corrente dell'utente.

Se i dati sono in una NSArrayè possibile utilizzare sortedArrayUsingFunctionper chiamare una funzione di supporto che chiama questo metodo.

Risposto il 08/05/2010 a 19:40
fonte dall'utente

voti
1

Loop attraverso i CLLocations e trovare la distanza tra loro e la vostra posizione corrente.

Quindi utilizzare il proprio algoritmo di ordinamento per ordinare le distanze si stanno avendo in un array.

for (CLLocation *loc in locations) {
  [distances addobject:[currentLocation distanceFromLocation:loc]];
}
[distances sort]; /* Own sorting algorithm */
[yourTable reloadData];
Risposto il 04/03/2011 a 08:54
fonte dall'utente

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