1

我试图在用户路径之后在 MKMapView 上创建一条线。

我发现这个相当老的帖子,我正试图让它按照接受的答案中的解释工作:

有没有人有任何关于如何使用 MKOverlayPathView 创建路径的示例?

没有得到的是如何“提取”提到的 CLLocation 对象数组。现在我已经设置了mapView setShowsUserLocations:YES,它可以很好地更新我的动作,所以我想我可以以某种方式获取CLLocations对象,并不断画线?

我现在还很喜欢 iOS,所以要温柔。

4

2 回答 2

3

查看Apple 的 BreadCrumb 示例应用程序的源代码,了解如何使用 MKOverlayView 绘制用户路径的示例。它完全符合您的要求,并且非常有效。这是一个很好的示例应用程序,用于在 iOS 中开始使用核心位置和 mapkit。

这个想法是有一个符合 MKOverlay 协议的对象,该对象具有用户记录的坐标数组的属性。当用户记录一个新位置时,您将向该数组添加一个坐标。然后,您的 MKMapViewDelegate 负责为您的叠加层提供 MKOverlayView。然后,您的 MKOverlayView 类负责在用户记录的坐标数组中的点之间绘制线条。这发生在 MKOverlayView 的drawMapRect:zoomScale:inContext方法中。请注意,您必须特别考虑drawMapRect:zoomScale:inContext将由多个线程调用的事实。如果您在添加新坐标时没有锁定 MKOverlay 的坐标数组,您几乎肯定会遇到崩溃。请参阅面包屑代码以有效地留住您drawMapRect方法线程安全。一个效率较低但更简单的替代方法是不直接从您的 MKOverlayView 访问 MKOverlay 的数组,而是传递它的副本。

于 2013-08-20T04:05:28.977 回答
1

地图将显示位置图钉,但实际上不会在您的位置更改时通知您。您想将控制器添加为委托CLLocationManager并使用startUpdatingLocation. 然后,您将获得可保存并用于向地图添加叠加层的位置更新。

于 2013-08-19T19:21:39.140 回答