Frage an iphone, cllocation, gps, altitude – Abrufen der Höhe (Höhe vom Meeresspiegel) meines Standorts im iphone SDK

4

Ich versuche, die Höhe meines Standorts in meiner Anwendung zu ermitteln. Aber jedes Mal, wenn ich es versuchealtitude Eigentum vonCLLocation Gegenstand, den ich bekomme0.00 als Ergebnis.

Ich habe nach meiner Frage gegoogelt und eine ähnliche Frage bekommenHier undHier. Dieser Link besagt, dass wenn ich über WLAN oder Mobilfunk auf CLLocation zugreife, der Wert null ist. Auch wenn ich versuche einzustellendesireAccuracy Am besten ist es, wenn nicht sichergestellt wird, dass die App GPS verwendet. Wenn ich in einem Gebäude bin, kann ich nicht auf GPS zugreifen.

In vielen Fällen ist es nicht sicher, ob die App nur GPS verwendet. Ich möchte auch eine Möglichkeit, Altitude über WLAN oder den Mobilfunkmast zu erreichen. Dafür habe ich mehr gegoogelt und ich habe bekommenGoogle Earth API aber ich denke, das ist nur für Microsoft .net-Technologie.

In dieser Situation denke ich, dass ich für eine Lösung einen Webdienst in Microsoft-Technologie erstellen und meinen Standort dort übergeben kann. Als Antwort kann ich die Höhe abrufen, aber ich möchte dies nicht tun.

Kann mir jemand vorschlagen, wie ich die Höhe meines Standorts von ios erhalte? Gibt es eine Möglichkeit oder nicht? Wenn ja, dann navigieren Sie mich bitte in die richtige Richtung.

Danke im Voraus.

Edit1

ich benutzteCLLocationManager Zum Aktualisieren des Standorts und wenn ich meinen Standort erhalte, benötige ich Höhe.

Edit2

Laut der Antwort von @ fishinear habe ich folgenden Code versucht:

- (void)viewDidLoad
{
    [super viewDidLoad];
    manager = [[CLLocationManager alloc] init];
    [manager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
    [manager setDistanceFilter:kCLDistanceFilterNone];
    [manager setDelegate:self];
    [manager startUpdatingLocation];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    if ([newLocation verticalAccuracy] >= 0) {
        NSLog(@"Altitude = %lf",newLocation.altitude);
    }
    NSLog(@"Vertical Accuracy : %lf",newLocation.verticalAccuracy);
}

verticalAccuracy ist immer-1. Sie ändert sich auch nach dem Ausführen der App in den letzten 30 Minuten nicht. Ich laufe ios 4.3.2 auf meinem 3GS. Ich bin in der Halle und denke, dass ich mit diesem Code nicht einmal auf GPS zugreifen kann.

Deine Antwort

2   die antwort
4

GPS wird immer verwendet, wenn Sie bei der Konfiguration des CLLocationManager die Option "Gewünschte Genauigkeit" auf "Best" oder "BestForNavigation" und "Distanzfilter" auf "kCLDistanceFilterNone" setzen. Sie erhalten dann auch Höhenwerte im Ereignis CLLocation.

Es dauert jedoch eine Weile, bis das GPS genügend Satelliten "erfasst" hat, um die Höhe zu melden. Während dieser Zeit werden CLLocation-Ereignisse ohne Höhenwerte gemeldet. Daher sollten Sie die ersten beiden Ereignisse ignorieren, bis der Wert für verticalAccuracy für Sie ausreicht. Überprüfen Sie auch den Zeitstempel, da das erste CLLocation-Ereignis manchmal ein altes Ereignis ist.

Sie geben an, dass Sie drinnen sind. In Innenräumen kann es sein, dass das GPS Probleme hat, genügend Satelliten zu "sehen", um eine Höhe zu bestimmen. Versuchen Sie es zuerst im Freien, wenn es dort funktioniert, dann ist das die Ursache. fishinear
Haben Sie überprüft, ob die Ortungsdienste für diese App aktiviert sind? Dmorneault
Prüfe meinedit2 fraglich. Ich habe Ihren Vorschlag umgesetzt, aber es hat nicht funktioniert. Kapil Choubisa
Überprüfen Sie das Feld verticalAccuracy in CLLocation. Dies zeigt die Genauigkeit des Höhenwerts an und ist negativ, wenn die Höhe nicht bestimmt wurde. fishinear
Aber wie kann ich sicherstellen, dass der Höhenwert unter den wenigen Werten, die Sie sagten, korrekt ist? Kapil Choubisa
0

Android - Höhe nach Längen- und Breitengrad ermitteln? Es gibt eine Android-Lösung, die sich jedoch problemlos an iOS anpassen lässt.

Die Antwort ist, das zu verwendenUSGS Elevation Query-Webdienst

Von der obersten Antwort aus senden Sie einfach eine HTML-Webanfrage an:

http://gisdata.usgs.gov/xmlwebservices2/elevation_service.asmx/getElevation?X_Value=" + 
             String.valueOf(longitude)   + 
             "&Y_Value=" + String.valueOf(latitude)             
             + "&Elevation_Units=METERS&Source_Layer=-1&Elevation_Only=true"; 

Dann können Sie den Antworttext zwischen den<double>...</double> Stichworte

Bearbeiten: Es sieht so aus, als würden Sie versuchen, eine Erhebung außerhalb der USA zu erreichen.

Google Maps API bietet einen Höhendienst und Dokumentation unterhttps://developers.google.com/maps/documentation/javascript/elevation

Vielen Dank. Deine bearbeitete Antwort hat geholfen :)developers.google.com/maps/documentation/javascript/elevation Das ist der, den ich gesucht habe. Kapil Choubisa
Ich habe versucht, diese URL zu verwenden, und ich habe x- und y-Werte übergeben22.998851594142938 & 72.5317382812553173828125 jeweils und die Antwort ist<double>-1.79769313486231E+308</double>. Was verstehe ich damit? Wie komme ich damit in die Höhe? Kapil Choubisa

Verwandte Fragen