ios - MKMapView。在移动中创建路径

标签 ios objective-c mapkit

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

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

Does anyone have any examples on how to create a path using MKOverlayPathView?

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

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

最佳答案

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

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

关于ios - MKMapView。在移动中创建路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18321388/

相关文章:

ios - 带自动布局的尺寸标签

iphone - 是否可以在 iOS 上使用 Quartz 从 PDF 数字中获取 double 值?

objective-c - 重新加载 View

iphone - UITapGestureRecognizer 在 UIImageView 中不工作

c# - iOS 依赖注入(inject)框架(最佳实践)

ios - 如何在容器 View 单元格中创建 map View

ios - 点击放大 map - iOS

objective-c - 自定义 MKAnnotation 总是说它是一个 MKUserLocation 类

android - 由于缺少 info.plist 和其他文件,Worklight 在 OS X、iPhone 和 Android 上的构建失败

ios - 如何使用 CNContact 获取在 Objective - C 中最后修改的联系人?