2015-10-26 7 views
5

Code, um das Problem zu reproduzieren:CLLocation distanceFromLocation: Gibt auf iOS 9 null zurück. Ist es ein Fehler?

-(void)testDistance { 
    NSLog(@"Test distance..."); 

    CLLocation *location1 = [[CLLocation alloc] initWithLatitude:137.02954600000001 longitude:50.543728999999999]; 
    CLLocation *location2 = [[CLLocation alloc] initWithLatitude:55.79676300 longitude:49.10834400]; 

    CLLocationDistance distance = [location1 distanceFromLocation:location2]; 
    NSLog(@"Distance: %lf", distance); 
} 

iOS 8.4 Ausgang:

Entfernung: 9021699,415204

iOS 9.1 Ausgang:

Entfernung: 0.000000

location1 und location2 sind nicht Null.

Ich suchte SO für eine ähnliche Frage, konnte aber keine finden. Sieht für mich wie ein iOS 9 Bug aus. Sind Sie einverstanden? Erhalten Sie ähnliche Ergebnisse? Ich wollte einen Fehlerbericht an Apple senden, aber ich wollte zuerst bestätigen.

Ich habe den Code auf Simulatoren (sowohl iOS 8.4 und iOS 9.1) ausgeführt. Die Systemsprache war auf Russisch eingestellt, die Region war auf Russland eingestellt.

UPDATE:lat und lon eingemischt werden, aus. Der Breitengrad sollte im Bereich [-90, 90] liegen. In früheren Versionen von iOS ergab sich immer noch ein Ergebnis. In iOS 9 haben sie 0 zurückgegeben. Ich denke nicht, dass dies ein guter Rückgabewert für einen solchen Fall ist, weil es ein vollkommen gültiger Wert ist. Ich denke, dass sie stattdessen einen Fehlercode zurückgeben sollten (wie sie für nil, -1 zurückgeben). Zumindest muss es in den Dokumenten erwähnt werden. Ich beabsichtige, in naher Zukunft einen Fehlerbericht einzureichen.

Antwort

2

Überprüfen Sie den Breitenwert von location1 .. Ich denke, es gibt einige Unstimmigkeiten mit dem Breitengrad (-90, 90).

+0

Nicht ganz bekommen, was Sie vorschlagen. Könntest du bitte etwas mehr erklären? Der erste Breitengrad liegt nicht im Bereich (-90, 90). Außerdem glaube ich, dass der Code für jedes gültige Breiten-/Längenpaar funktionieren soll. – FreeNickname

+1

137 ist der Wert für den Breitengrad Ihres Standortes1. Der Breitenbereich sollte zwischen (-90

+0

Gültiger Bereich für Breitengrad ist ein guter Punkt, danke. Upvoted Ihre Antwort. Ich denke, ich sollte die Server-Seite unserer App überprüfen. Aber ich denke immer noch nicht, dass die Null zurück ist eine gültige Reaktion in diesem Fall. Sie geben -1 zurück, wenn das Argument null ist, also warum geben sie Null zurück (was ein normaler Rückgabewert ist), wenn die Eingabe falsch ist? – FreeNickname