Frage

Vor iOS 4.0, CoreLocation Berichterstattung über die Höhe korrekt, jetzt meldet es immer 0 ft.

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    NSString *tLatitude  = [NSString stringWithFormat:@"%3.5f", newLocation.coordinate.latitude]; 
    NSString *tLongitude = [NSString stringWithFormat:@"%3.5f", newLocation.coordinate.longitude];
    /*  the following returns 0 */
    NSString *tAltitude  = [NSString stringWithFormat:@"%i",    newLocation.altitude];

    /* theres more code, but it's not relevant, 
                      and this worked prior to iOS 4.0*/
    [manager stopUpdatingLocation];
}

Weder auf dem Gerät noch auf Simulator arbeiten, erlebt noch jemand dieses Problem?

War es hilfreich?

Lösung

Wenn Sie verwenden startMonitoringSignificantLocationChanges, Das ist ein Feature, das neu für iOS 4.0 war, und Sie erhalten keine Höhenaktualisierungen. In diesem Modus mit geringer Leistung wird nur Zelltürme verwendet, um den Standort eines Benutzers zu ermitteln, und diese Methode meldet nicht die Höhe.

Im Allgemeinen verfügt das iPhone über drei Möglichkeiten, um Ihren Standort herauszufinden-Zelltürme, Wi-Fi und GPS. Sie erhalten nur eine Höhe, wenn das GPS verwendet wird. Also auch wenn Sie Ihre festlegen desiredAccuracy Die Einstellung, die wirklich präzise ist, um das Gerät zur Verwendung von GPS zu zwingen. Wenn ein Benutzer in Innenräumen das iPhone wahrscheinlich nicht in der Lage ist, ein GPS-Signal zu erhalten und sich auf Zelle oder WLAN fällt. In diesem Fall werden Sie keine Höhe bekommen. Betrachten Sie auch Benutzer, die sich auf einem iPod Touch befinden-es hat nur die Möglichkeit, einen Standort über Wi-Fi zu erhalten, und meldet somit auch keine Höhe.

Andere Tipps

Zwei Dinge, die Sie versuchen konnten. Versuchen Sie zunächst, den Standortmanager festzulegen desiredAccuracy zu kCLLocationAccuracyBest.

Wenn das nicht funktioniert, versuchen Sie es zu entfernen [manager stopUpdatingLocation];, und setzen Sie a NSLog in dem didUpdateToLocation mit der Höhe. Manchmal muss es sich ein wenig eingrenzen, bevor es die Höhe anzeigt.

Von dem Kernstandortdatentypen Referenz:

Das CLLocationDistance Datentyp (der Datentyp für die Höhe) ist a double. Das Formatierer, das Sie für Ihre verwenden stringWithFormat ist ein integer. Sie müssen Ihre Höhe auf eine geben integer, zuerst oder benutze a double (%f) Formatierer.

Der Kernstandort meldet nicht immer die Höhe sofort. Normalerweise überprüfe ich nach einer Nullhöhe in meiner "Erfolgs" -Delegiertenmethode. Wenn die Höhe immer noch 0 beträgt, überprüfe ich immer wieder, sonst drehe ich mich mit der Korelation.

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