MapKit Annotations et l'emplacement de l'utilisateur

voix
2

J'ai suivi ce tutoriel pour faire ma première application:

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

Je voudrais vraiment savoir comment trier les annotations du tableau afin de la distance à l'utilisateur (la plus proche annotation est la première sur la table) Comment est-il possible de le faire?

Je comprends que je dois utiliser le CLLocation pour trouver l'emplacement de l'utilisateur, mais alors je ne sais pas.

Quelqu'un pourrait-il me aider?

À votre santé,

Nous vous remercions d'avance pour votre aide a beaucoup apprécié,

EDIT: J'ai ajouté les détails:

les données ne se trouve dans un réseau, il est mis en oeuvre sous cette forme 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];

... etc. Comment est-il possible de le faire alors?

Vous trouverez ici le code source:

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

teddafan

Créé 08/05/2010 à 19:06
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
3

Sur un , CLLocationvous pouvez utiliser

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

pour calculer la distance d'un objet par un autre. Dans ce cas, il serait sans doute l'emplacement actuel de l'utilisateur.

Si les données sont dans un NSArrayvous pouvez utiliser sortedArrayUsingFunctionpour appeler une fonction d'assistance qui appelle cette méthode.

Créé 08/05/2010 à 19:40
source utilisateur

voix
1

Boucle à travers les CLLocations et trouver la distance entre eux et votre position actuelle.

Ensuite, utilisez votre propre algorithme de tri pour trier les distances que vous rencontrez dans un tableau.

for (CLLocation *loc in locations) {
  [distances addobject:[currentLocation distanceFromLocation:loc]];
}
[distances sort]; /* Own sorting algorithm */
[yourTable reloadData];
Créé 04/03/2011 à 08:54
source utilisateur

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