2012-06-29 95 views
0

我有一個相當緊迫的問題,我無法找到答案。 我正試圖在iPhone應用程序中使用Google Maps API繪製當前位置和目標之間的路徑。我收到來自谷歌的數據,沒有任何錯誤解析JSON,解碼折線,然後我有這樣的方法:試圖建立谷歌地圖路徑時崩潰

-(void) loadRouteWithPoints:(NSArray *) routes 
{ 
    CLLocationCoordinate2D coords[[routes count]]; 
    for(int i = 0; i < routes.count; i++) 
    { 
     CLLocation* loc = (CLLocation*)[NSKeyedUnarchiver unarchiveObjectWithData:[routes objectAtIndex:i]]; 
     CLLocationCoordinate2D c; 
     c.latitude = loc.coordinate.latitude; 
     c.longitude = loc.coordinate.longitude; 
     coords[i] = c; 
    } 

    MKPolyline *line = [MKPolyline polylineWithCoordinates:(CLLocationCoordinate2D*)coords count:[routes count]]; 
    [self.mapsView addOverlay:line];  
} 

這會拋出異常的[NSKeyedUnarchiver unarchiveObjectWithData:[routes objectAtIndex:i]];這樣說:

「 - [ CLLocation字節]:無法識別的選擇發送到實例」

我發送一個參數是一個,我折線解碼後得到,它不是零,它具有陣列 - 在我的測試 - 47個值。我可以看到他們每個條目看起來是這樣的:

< + 44.47874069,+ 26.10523033> +/-0.00米(-1.00速度MPS /當然-1.00)@ 12年6月29日17時09分37秒東歐夏令時間

你知道什麼可能導致這次崩潰,它怎麼能被修復?

+0

你必須在你已經張貼你的答案。異常告訴你什麼是問題。 –

+0

我知道沒有CLLocation的「字節」這樣的方法/屬性。我的問題是如何解決這個問題。顯然,它爲別人工作。所以也許SDK中有一些變化。 – George

回答

0

這裏的錯誤表明你認爲在[routes objectAtIndex:x]中的值可能不是你認爲的值。

嘗試分隔行,看看在[routes objectAtIndex:x]處檢索到的對象的類類型是什麼,您可能會得到答案。

似乎有可能的對象是已經是CLLocation,並不需要爲未編碼格式...

+0

我正在打印這個值,它看起來沒問題。所有的值都像上面貼出的值 - 當然,座標不同。如果我不調用'unarchiveObjectWithData',它可以工作,但找到的路徑不正確。它變成了一種街道,但並不完全。路徑的某些部分穿過公園和湖泊,沒有沿着街道。 – George