2015-10-26 22 views
5

codice per riprodurre il problema:CLLocation distanceFromLocation: restituisce zero su iOS 9. Si tratta di un bug?

-(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 in uscita:

Distanza: 9021699,415204

iOS 9.1 in uscita:

Distanza: 0.000000

location1 e location2 non sono nulli.

Ho cercato SO per una domanda simile ma non sono riuscito a trovarne una. Sembra un bug di iOS 9 per me. Sei d'accordo? Ottieni risultati simili? Volevo inviare una segnalazione di bug ad Apple, ma volevo prima confermare.

Ho eseguito il codice sui simulatori (sia iOS 8.4 che iOS 9.1). Il linguaggio di sistema era impostato su russo, la regione era impostata sulla Russia.

AGGIORNAMENTO:lat e lon risultato essere misto. La latitudine dovrebbe essere compresa nell'intervallo [-90, 90]. Nelle versioni precedenti di iOS produceva ancora dei risultati. In iOS 9 hanno reso il reso 0. Non penso che questo sia un buon valore di ritorno per questo caso, perché è un valore perfettamente valido. Penso che dovrebbero invece restituire qualche codice di errore (come fanno per nil, restituendo -1). Almeno, deve essere menzionato nei documenti. Ho intenzione di presentare una segnalazione di bug nel prossimo futuro.

risposta

2

Verificare il valore di latitudine di posizione1 .. Immagino che ci sia qualche disallineamento con intervallo di latitudine (-90, 90).

+0

Non ho proprio capito cosa stai suggerendo. Potresti spiegarci un po 'di più? La prima latitudine non è nel range (-90, 90). Inoltre, credo, il codice dovrebbe funzionare per qualsiasi coppia di latitudine/longitudine valida. – FreeNickname

+1

137 è il valore della latitudine della posizione1. L'intervallo di latitudine deve essere compreso tra (-90

+0

L'intervallo valido per la latitudine è un buon punto, grazie. Hai alzato la tua risposta. Penso che dovrei controllare il lato server della nostra app. Ma continuo a non pensare che restituire zero sia una reazione valida in questo caso. Restituiscono -1 se l'argomento è nullo, quindi perché restituiscono zero (che è un valore di ritorno normale) quando l'input non è corretto? – FreeNickname