iOS:在 MapKit 中的 MKOverlay 中使用矢量数据
我想使用 MapKit 覆盖自定义地图。我目前已经实现了 WWDC10 中的 TileMap 示例。然而,我的叠加地图是矢量形式 (pdf),将其栅格化并将其转换为图块似乎是一种可怕的浪费(也占用大约 10meg,而不是 300KB)。
有没有办法:
a) 使用 MKOverlay 覆盖 pdf,或者
b) 轻松地将矢量图形转换为 MKPolygons、线条等,以便我可以在 MapKit 中重新创建叠加地图?
注意:我尝试叠加的地图非常简单,但地理范围却很大。它确实需要离线工作。
I'd like to overlay a custom map using MapKit. I've currently implemented the TileMap sample from WWDC10. However, my overlay map is in vector form (pdf) and it seems like a terrible waste to rasterise it and convert it to tiles (also takes up about 10megs as opposed to 300KB).
Is there a way to either:
a) overlay a pdf using MKOverlay, or
b) easily convert a vector graphic into MKPolygons, lines etc., so I can recreate my overlay map in MapKit?
Notes: The map I'm trying to overlay is pretty simple but geographically huge. It does need to work offline.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 MKOverlay 覆盖 PDF。在 MKOverlayView 的 drawMapRect:zoomScale:inContext: 方法中,只需使用标准 PDF 绘图函数。您可以找到这些函数此处。
这种方法的问题在于,对于发送到该绘图方法的每个映射矩形,您每次都必须绘制整个 PDF。这会非常慢。我认为通过光栅化 PDF 并将其转换为图块,您会看到最佳性能。对于 iOS 应用程序来说,10 MB 的数据集并不算太大。
You can overlay a PDF using MKOverlay. In the drawMapRect:zoomScale:inContext: method of your MKOverlayView just use standard PDF drawing functions. You can find those functions here.
The problem with this approach is that for each maprect that is sent to that drawing method you will have to draw the entire PDF each time. This will be really slow. I think you will see the best performance by rasterizing the PDF and converting it to tiles. 10 MB is not too large of a dataset to ship with an iOS app.