2009-07-23 48 views
1

我試圖使用CLLocationDistance NaN的

- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location 

我看到了,我開始變得NaN的在陌生的地方在飛行中的iPhone應用程序,計算兩套座標點之間的距離,從而對此事進行調查起來關閉,具有以下硬編碼值。

CLLocationDistance testDistance; 
placeLocation = [[CLLocation alloc] initWithLatitude:12.236533 longitude:11.011419]; 
userLocation = [[CLLocation alloc] initWithLatitude:12.236533 longitude:11.011419]; 
testDistance = [userLocation getDistanceFrom:placeLocation]; 
if(isnan(testDistance)) 
    NSLog(@"ISNaN!"); 

[placeLocation release]; 
[userLocation release]; 

上面被稱爲多次,在某些情況下,testDistance是NaN。

我擔心我在這裏錯過了一些非常簡單的事情。任何人有任何想法?

更新1:

好了,我搬到上面的代碼到一個新的項目(放在應用程序委託的一切),其循環100次,一切都很好。因此,這表明問題與項目相關,但這很有幫助,因爲所有變量都在1函數的範圍內。

解決方案:

OK,這似乎是一個模擬器的bug。相同的代碼構建在設備上運行得非常好。案件解決。

+0

似乎並不像你做錯了什麼,也許它的發生,因爲這兩個座標是一樣的嗎?當你把不同的座標放在一起時會發生嗎? – Daniel 2009-07-23 13:54:40

+0

這只是一個巧合,這兩個位置具有相同的緯度/經度值。沒關係。我放入的任何東西都會不時產生相同的NaN結果。 這個東西是從一個UITableView被調用,應該返回一個距離,然後將被用來填充一個自定義的UITableVIewCell ... – Kaspa 2009-07-23 14:34:59

回答

1

THE SOLUTION:

好吧,這似乎是一個模擬器的錯誤。 相同的代碼生成在設備上運行得非常好。 案例解決,你如何提交一個蘋果的錯誤?

1

你是說,當兩個位置具有完全相同的緯度/經度時,你實際上得到了NaN?哇...

你可能會做

一件事是測試反向 - 如果你得到的NaN,嘗試扭轉兩個CLLocations:

testDistance = [placeLocation getDistanceFrom: userLocation]; 

,看看結果總是匹配;即對於兩種方式總是NaN,或對於兩種方式總是不是NaN。

另一件事來檢查是當你測試

testDistance = [userLocation getDistanceFrom: userLocation]; 

對不起,這不是一個答案會發生什麼,但也許我們可以得到一些更多的線索。

+0

這只是一個巧合,這兩個位置具有相同的緯度/經度值。沒關係。我放入的任何東西都會不時地產生同樣的NaN結果。 嘗試顛倒它們之前,雖然它沒有什麼意義。 – Kaspa 2009-07-23 14:32:44

0

使用distanceFromLocation:代替