Frage

Ich habe eine lange Liste von Orten mit Breiten und Längen in einem Plan. Ich möchte eine Tabellenansicht der Orte nur innerhalb von x -Entfernung vom aktuellen Standort des Benutzers anzeigen. Gibt es eine Möglichkeit, Objekte aus den Lats & Longs in der Plist -Datei zu erstellen, damit ich "Distanzfromlokation" verwenden kann? Noch wichtiger ist, wie kann ich das Array nur mit einem Abstand von Strom weniger als x anzeigen? Ich gehe davon aus, dass ich eine Reihe von Objekten aus Lats & Longs in der Plist machen müsste und dann ein Objekt in Array machen, wenn Objekte von weniger als x, richtig sind?

Bitte helfen Sie.

Hier bin ich jetzt: Ich bekomme einen Fehler in der Doppelklubteillinie

- (void)viewDidLoad {
 [super viewDidLoad];

     NSArray *clubArray = [NSArray arrayWithObjects:[self danceClubLocation], nil];
     self.tableData = clubArray;
}

-(CLLocation *)danceClubLocation
{
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
    NSArray *array = [NSArray arrayWithContentsOfFile:plistPath];

    NSEnumerator *e = [array objectEnumerator];
    id object;
    while ((object = [e nextObject])) {
        double clubLatitude = [[array valueForKey:@"Latitude"] doubleValue];
        double clubLongitude = [[array valueForKey:@"Longitude"] doubleValue];
        CLLocation *clubLocation = [[CLLocation alloc] initWithLatitude:clubLatitude longitude:clubLongitude];
        if ([clubLocation distanceFromLocation:myLocation]<=50) {
            return clubLocation;
        }
        else return nil;
    }
    return nil;
}

-(CLLocation *)myLocation
{
    CLLocation *location = [locationManager location];
    CLLocationCoordinate2D coordinate = [location coordinate];
    NSNumber *myLatitude = [NSNumber numberWithDouble:coordinate.latitude];
    NSNumber *myLongitude = [NSNumber numberWithDouble:coordinate.longitude];
    double myLatitudeD = [myLatitude doubleValue];
    double myLongitudeD = [myLongitude doubleValue];
    myLocation = [[CLLocation alloc]initWithLatitude:myLatitudeD longitude:myLongitudeD];
    return myLocation;
}
War es hilfreich?

Lösung

Wie @Davidneiss sagte, müssen Sie über die Liste iterieren (ein NSArray mit der Plist als Quelle) und es wäre so etwas wie diese:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"latlong" ofType:@"plist"];
NSArray *array = [NSArray arrayWithContentsOfFile:plistPath];

NSEnumerator *e = [array objectEnumerator];
id object;
while (object = [e nextObject]) {
  // do something with object
}

Dann können Sie das tun, was Sie wollen (entfernen Sie, was weit vom Benutzer oder was auch immer entfernt ist).

Andere Tipps

Lesen Sie in Ihrem Plan durch, iterieren Sie es, um diejenigen in x -Entfernung herauszuziehen und ein Array mit ihnen zu füllen, das die Datenquelle für Ihre Tabellenansicht ist?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top