2009-07-07 5 views
1

Ich habe ein Problem, was ich denke, ist eher trivial ... Ich habe eine App mit dem Mapkit codiert und habe die Entwicklung auf meinem Mac mit dem Simulator, der kein GPS hat. Deshalb habe ich die Koordinaten fest programmiert, um eine Benutzerposition zu simulieren. Heute, als ich meine App zum ersten Mal auf meinem iPhone ausprobierte, dachte ich, ich müsste nur meinen Code ein wenig ändern, um die Koordinaten vom GPS zu lesen und die Informationen über die Benutzerposition zu bekommen. Aber so einfach ging es nicht. Hat jemand eine Idee, wie man das löst? Ich brauche den Längen- und Breitengrad des Benutzers, um die Entfernung zu einer anderen Position zu berechnen, und ich dachte, ich könnte so etwas tun ...?Problem beim Lesen des Benutzerstandortes in Koordinaten auf iPhone

CLLocationManager *clm = [[CLLocationManager alloc]init];
[clm.delegate self]; [clm startUpdatingLocation];


userLocationFromGPS = clm.location.coordinate;
//the userLocationFromGPS is a CLLocationCoordinate2D userLocationFromGPS object

user = [[Annotations alloc]initWithCoordinate:userLocationFromGPS];
[user setTheTitle:@"You are here!"];

userLocationPlain =
[[CLLocation alloc]initWithLatitude:userLocationFromGPS.latitude longitude:userLocationFromGPS.longitude];

muss ich die Koordinaten aber kann nicht herausfinden, wie sie bekommen ... irgendwelche Ideen? Vielen Dank im Voraus!

Antwort

2

CLLocationManager meldet den Standort asynchron, sodass Sie einen Delegaten bereitstellen müssen.
Überlegen Sie, über LocateMe Codebeispiel zu gehen. Außerdem sollten Sie die Koordinaten im Simulator fest codieren. Der Simulator würde die Koordinaten des Apple-Hauptquartiers verwenden.

Hier einige Refactoring für den Code, den Sie zur Verfügung gestellt (ich laufe es nicht): Betrachten Sie die folgenden Aktionen ausführen:


    CLLocationManager *clm = [[CLLocationManager alloc] init]; 
    clm.delegate = self; 
    [clm startUpdatingLocation]; 

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 
{ 

    Annotations *user = [[Annotations alloc] initWithCoordinate:newLocation]; 
    [user setTheTitle:@"You are here!"]; 

    CLLocation *userLocationPlain = 
    [[CLLocation alloc] initWithLatitude:newLocation.latitude 
         longitude:newLocation.longitude]; 

    // At some point you should call [manager stopUpdatingLocation] 
    // and release it 
} 
0

Wie this sagt, könnte man zunächst den Standort Rahmen importieren müssen.

0

Vielen Dank für die Beantwortung!

msaeed: Ihr Code sieht gut aus. Ich habe einen Delegierten definiert, aber vergessen, die Methode wie in Ihrem Beispiel zu implementieren. Ich werde es ausprobieren! Vielen Dank!

mcandre: Ja, ich habe das Framework hinzugefügt und ich nutze die Funktionalitäten darin in anderen Methoden in meiner App, wenn ich Position von einer KML lesen und behandeln.

/MACloop

+1

Großartig! In Zukunft sollten Sie Kommentare hinterlassen, anstatt eine "Antwort" hinzuzufügen. – notnoop

+0

Ah - ja! Ich wusste nicht über dieses Feature ;-) Danke nochmal! –

Verwandte Themen