我正在尝试使用图块创建基于矢量的自定义地图,就像 iOS 6 地图一样。我已经看到了许多基于栅格地图的出色解决方案,但到目前为止还没有基于矢量地图的解决方案。
我在绘图代码中有整个地图,但不幸的是它太大而无法在一个文件中使用。我也有svg。最好,我想要一个不涉及以另一种格式重新创建整个地图的解决方案,而且,如果该解决方案在 iPhone 上很容易,我更愿意,即不会在其上崩溃/执行缓慢。
有没有人有任何想法?
感谢您的热心帮助,
我正在尝试使用图块创建基于矢量的自定义地图,就像 iOS 6 地图一样。我已经看到了许多基于栅格地图的出色解决方案,但到目前为止还没有基于矢量地图的解决方案。
我在绘图代码中有整个地图,但不幸的是它太大而无法在一个文件中使用。我也有svg。最好,我想要一个不涉及以另一种格式重新创建整个地图的解决方案,而且,如果该解决方案在 iPhone 上很容易,我更愿意,即不会在其上崩溃/执行缓慢。
有没有人有任何想法?
感谢您的热心帮助,
我认为您最好的选择是将 SVG 输出为 [vector] PDF。这应该是您可以使用用于创建 SVG 的任何软件自动实现的目标。PDF 的优势在于它是 iOS 原生可以理解的矢量格式,并且可以在少量调用中呈现。
然后您可能想要做的是创建一个可以呈现 PDF 的 UIView 子类。您需要深入了解相关的 Core Graphics C 内容,但这并不难实现。随机从互联网上拉出一个教程给了我这个。
如果你给那个 UIView 一个然后为你的整个地图设置它layerClass
的CATiledLayer
大小并将它放在一个滚动视图中,你应该得到与地图、Safari 等完全相同的平铺行为。你不必实现任何特殊的东西——如果你捕获您的视图drawRect:
,您应该看到它仅被小部分调用。
不要担心任何关于CATiledLayer
开始引发线程问题的旧教程 - 根据QA1637,您只允许以正常的 UIKit 方式实现 drawRect: 并且线程从 iOS 4 开始就可以工作。假设您打算支持 iPhone 5 屏幕无论如何,你不能提交早于 4.3 的决议,即使你不是那么我真的不建议你花费精力。