我想用我自己的形象制作一张 map 。图像将是这样的房屋计划。我心里有一个实现方案,只是需要专家的建议才能更好地实现它。
我的方式,
- 设置 ScrollView 和 ImageView ,启用滚动并将内容偏移设置为图像框架。
- 设置委托(delegate),以便我可以放大/缩小和平移图像。
- 加载图像后,创建一个自定义 View 对象来表示 Pin/Marker,其中包含位置、图像和名称等详细信息,并将它们作为 subview 添加到 ImageView 中。
这就是展示 map 的全部内容。但我有两个重要的问题需要处理。
- 我应该能够检测到任何边缘/角落处相交的图钉/标记,以便我可以决定是否应该显示名称。为此,我需要一个更好的碰撞检测算法(建议一个)。每次缩放图像时都应重新绘制图钉/标记。我不想使用集群算法来组合我的引脚。
- 当我调整 ImageView 的大小时,我应该保持 subview 的位置和大小,所以我想我需要根据缩放比例重新计算 View 的位置,并在scrollViewDidZoom委托(delegate)内完成。
就是这样。可能不是最好的做法,所以寻找最好的或说它更好。
谢谢。
最佳答案
我为客户端应用程序所做的几乎就是您所描述的。这是很多工作。
map 通常非常大,可以在很宽的比例范围内显示。您希望它们从最接近的缩小到整个 map 适合屏幕的比例看起来都不错。为此,您确实需要以各种比例构建 map 并将其划分为图 block (类似于 OpenGL 中纹理渲染中常用的“mipmapping”。)
这就是我构建自定义 map 引擎的方式。我的开发基于 Apple 的一个名为“PhotoScroller”的示例应用程序。
但是,该开发是在 iOS 6 下开始的。Apple 已经添加了对 map 叠加层、叠加层渲染器和平铺渲染器的支持。现在可以创建您自己的自定义 map 图 block 并将它们存储在设备上或从网上下载,而无需求助于您自己的自定义 map 引擎。
如果让我再来一次,我几乎肯定会使用平铺叠加层和 MapKit,而不是自己构建一个新的 map 引擎。看看这个在线教程: Custom and Offline Maps Using Overlay Tiles
关于ios - 使用 ScrollView 和 ImageView 在 iOS 中构建类似 map 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37647884/