Ios MKOverlay更新闪烁

Ios MKOverlay更新闪烁,ios,mkmapview,cllocationmanager,mkoverlay,Ios,Mkmapview,Cllocationmanager,Mkoverlay,在我的应用程序中,我使用一条多段线来跟踪用户的路径。有时(并非所有时间,我不明白),当一条新线段添加到地图上时,整条线都会闪烁。有时候不是。这是用于添加行的代码: CLLocationCoordinate2D coords[2]; coords[0] = CLLocationCoordinate2DMake(newLocation.coordinate.latitude, newLocation.coordinate.longitude); coords[1] = CLLocationCoo

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

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

我认为最好的办法是在向用户显示地图之前,先把闪光灯弄清楚

请尝试以下操作之一:

[mapView setNeedsDisplay];


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

这可能没有关系,但Apple在位置感知编程指南的一节中确实说明了

因为映射视图是一个接口项,所以对
覆盖
阵列应同步并在 应用程序的主线程


但问题是,它根本不应该闪烁——有时会闪烁,有时不会。当添加新片段或应用程序从后台返回时也是如此?可能是两者的结合?从后台返回后添加新片段时会发生这种情况。这是否与从后台线程添加段有关?是的,我认为这可能就是问题所在;当应用程序进入后台时,我在CLLocationManager和线程方面遇到了其他问题。是的,我确实认为这解决了问题。不过,我还得再做一些测试才能确定。
if ([[mapView overlays] count] > 0){
    [[[mapView overlays] lastObject] setNeedsDisplay];
}