2011-10-27 125 views
4

在我的應用程序中,我使用MKPolyline來跟蹤用戶的路徑。有時(而不是全部時間,我不明白),當一個新的線段被添加到地圖中時,整條線閃爍。有時它不會。這是用於添加行的代碼:MKOverlay更新閃爍

CLLocationCoordinate2D coords[2]; 

coords[0] = CLLocationCoordinate2DMake(newLocation.coordinate.latitude, newLocation.coordinate.longitude); 

coords[1] = CLLocationCoordinate2DMake(oldLocation.coordinate.latitude, oldLocation.coordinate.longitude); 

MKPolyline* line = [MKPolyline polylineWithCoordinates:coords count:2]; 

[mapView addOverlay:line]; 

我錯過了什麼嗎?

編輯:這通常發生在應用程序從發送到後臺返回時。我不確定爲什麼,但是,因爲我只是添加覆蓋層,而不是修改整個mapView.overlays數組。 ...對?

+0

那麼,當一個新的細分受衆羣被添加或該應用程序從背景中返回時?也許是兩者的結合? –

+0

當從後臺返回後添加新段時發生。這是否與從後臺線程添加段的事實有關? –

回答

1

這可能不相關,但蘋果的確在位置感知編程指南的Managing the Map's Overlay Objects區間狀態...

由於地圖視圖是一個接口項目,到 overlays陣列的任何修改應在 應用程序的主線程上進行同步和執行。

+0

是的,我認爲這可能只是問題;當應用程序進入後臺時,我遇到了CLLocationManager和線程的其他問題。 –

+0

是的,我認爲這解決了問題。儘管如此,我還得做更多的測試來確定它。 –

0

我認爲你最好的選擇是在向用戶顯示地圖之前儘量使用閃光燈。

請嘗試以下之一:

[mapView setNeedsDisplay]; 

if ([[mapView overlays] count] > 0){ 
    [[[mapView overlays] lastObject] setNeedsDisplay]; 
} 

在您的信息 「viewWillAppear中」 的方法,或AppDelegate.m的 「applicationWillEnterForeground」 的方法把這些。

+0

但問題是它不應該閃爍 - 有時閃爍發生,有時不閃爍。 –