MapKit annotaties en User locatie

stemmen
2

Ik volgde deze tutorial mijn eerste app:

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

Ik zou heel graag willen weten hoe de annotaties in de tabel sorteren in volgorde van afstand tot de gebruiker (de dichtstbijzijnde annotatie is de eerste op de tabel) Hoe is het mogelijk om dat te doen?

Ik begrijp dat ik de CLLocation moet gebruiken om de locatie van de gebruiker te vinden, maar dan heb ik geen idee.

Kan iemand mij helpen?

cheers,

Dank u bij voorbaat voor uw zeer gewaardeerde hulp,

EDIT: ik heb toegevoegd gegevens:

de gegevens niet in een matrix, wordt geïmplementeerd in RootViewController.m in deze vorm:

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

... enzovoort. Hoe is het mogelijk om het te doen dan?

U kunt de broncode vindt u hier:

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

teddafan

De vraag is gesteld op 08/05/2010 om 19:06
bron van user
In andere talen...                            


2 antwoorden

stemmen
3

Op een CLLocationdie u kunt gebruiken

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

de afstand van een object berekenen van een ander. In dit geval zou het vermoedelijk huidige locatie van de gebruiker.

Als de gegevens in een NSArraydie u kunt gebruiken sortedArrayUsingFunctionom een helper functie die deze methode noemt noemen.

antwoordde op 08/05/2010 om 19:40
bron van user

stemmen
1

Loop door de CLLocations en vind de afstand tussen hen en uw huidige locatie.

Maak dan gebruik van uw eigen sortering algoritme om de afstanden u ondervindt in een array te sorteren.

for (CLLocation *loc in locations) {
  [distances addobject:[currentLocation distanceFromLocation:loc]];
}
[distances sort]; /* Own sorting algorithm */
[yourTable reloadData];
antwoordde op 04/03/2011 om 08:54
bron van user

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