4

在我的应用程序中,我使用 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 数组。...对?

4

2 回答 2

1

这可能不相关,但苹果确实在位置感知编程指南的管理地图的覆盖对象部分中声明......

因为地图视图是一个界面项,所以对数组的任何修改 overlays都应该同步并在应用程序的主线程上执行。

于 2011-12-08T00:23:58.343 回答
0

我认为您最好的选择是在向用户显示地图之前尝试让闪过。

尝试以下方法之一:

[mapView setNeedsDisplay];

或者

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

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

于 2011-12-08T00:09:25.653 回答