在我的应用中,我使用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数组。是吗?
答案 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”方法中。