MapKit poznámky a umístění uživatelů

hlasů
2

Sledoval jsem tento návod, aby svou první aplikaci:

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

Já bych opravdu rád věděl, jak třídit poznámky v tabulce v pořadí podle vzdálenosti uživatele (nejbližší anotace je první na stole) Jak je možné to udělat?

Chápu, že musím použít CLLocation zjistit polohu uživatele, ale pak nemám ponětí.

Mohl by mi někdo pomoci?

Na zdraví,

Děkuji předem za hodně ocenil pomoc,

EDIT: jsem přidal detaily:

data nejsou v matici, je prováděna v RootViewController.m v této formě:

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

... a tak dále. Jak je možné, aby to pak?

Najdete zdrojový kód zde:

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

teddafan

Položena 08/05/2010 v 19:06
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
3

Na ploše CLLocationmůžete použít

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

pro výpočet vzdálenosti objektu od druhého. V tomto případě by pravděpodobně bylo aktuální polohy uživatele.

V případě, že data v NSArraymůžete použít sortedArrayUsingFunctionk volání pomocnou funkci, která volá tuto metodu.

Odpovězeno 08/05/2010 v 19:40
zdroj uživatelem

hlasů
1

Smyčka přes CLLocations a najít vzdálenost mezi nimi a vaší aktuální polohy.

Pak použijte svůj vlastní třídící algoritmus pro třídění vzdáleností, které máte v poli.

for (CLLocation *loc in locations) {
  [distances addobject:[currentLocation distanceFromLocation:loc]];
}
[distances sort]; /* Own sorting algorithm */
[yourTable reloadData];
Odpovězeno 04/03/2011 v 08:54
zdroj uživatelem

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