iOS:在 MapKit 的 MKOverlay 中使用矢量数据

Posted

技术标签:

【中文标题】iOS:在 MapKit 的 MKOverlay 中使用矢量数据【英文标题】:iOS: Using vector data in MKOverlay in MapKit 【发布时间】:2011-02-24 15:16:25 【问题描述】:

我想使用 MapKit 覆盖自定义地图。我目前已经实现了 WWDC10 中的 TileMap 示例。但是,我的叠加图是矢量形式 (pdf),将其栅格化并将其转换为图块似乎是一种可怕的浪费(也占用大约 10 兆而不是 300 KB)。

有没有办法:

a) 使用 MKOverlay 覆盖 pdf,或 b) 轻松将矢量图形转换为 MKPolygons、线条等,这样我就可以在 MapKit 中重新创建叠加图?

注意:我试图覆盖的地图非常简单,但地理上巨大。它确实需要离线工作。

【问题讨论】:

【参考方案1】:

您可以使用 MKOverlay 覆盖 PDF。在您的 MKOverlayView 的 drawMapRect:zoomScale:inContext: 方法中,只需使用标准 PDF 绘图功能。你可以找到那些函数here。

这种方法的问题在于,对于发送到该绘图方法的每个 maprect,您每次都必须绘制整个 PDF。这会很慢。我认为您将通过光栅化 PDF 并将其转换为图块来看到最佳性能。 10 MB 的数据集对于 ios 应用来说并不算大。

【讨论】:

以上是关于iOS:在 MapKit 的 MKOverlay 中使用矢量数据的主要内容,如果未能解决你的问题,请参考以下文章

带有 MapKit ios 的渐变折线

如何启用 MapKit 楼层?

MapKit 覆盖以将平面图添加到地图

在 iOS 中实现离线地图的最佳方式

MapKit:如何从非常大的图像中添加新的地图层

iOS 5 MapKit,MKPlacemark,在 iOS 5 上运行 iOS 4.3 应用程序