MKOverlay更新闪烁

时间:2011-10-27 23:48:17

标签: ios mkmapview cllocationmanager mkoverlay

在我的应用中,我使用MKPolyline来跟踪用户的路径。有时(并非所有时间,我不明白),当新的线段添加到地图时,整条线闪烁。有时却没有。这是用于添加行的代码:

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数组。是吗?

2 个答案:

答案 0 :(得分:1)

这可能没有关系,但Apple确实在位置感知编程指南的Managing the Map's Overlay Objects部分说明了......

  

因为地图视图是一个接口项,所以对它的任何修改   应该同步overlays数组并执行   应用程序的主要线程。

答案 1 :(得分:0)

我认为您最好的选择是在向用户展示地图之前尝试使用闪光灯。

请尝试以下方法之一:

[mapView setNeedsDisplay];

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

将它们放在“viewWillAppear”方法或AppDelegate.m中的“applicationWillEnterForeground”方法中。