ios - 使用 ScrollView 和 ImageView 在 iOS 中构建类似 map 的实现

标签 ios objective-c google-maps collision-detection

我想用我自己的形象制作一张 map 。图像将是这样的房屋计划。我心里有一个实现方案,只是需要专家的建议才能更好地实现它。

我的方式,

  1. 设置 ScrollView 和 ImageView ,启用滚动并将内容偏移设置为图像框架。
  2. 设置委托(delegate),以便我可以放大/缩小和平移图像。
  3. 加载图像后,创建一个自定义 View 对象来表示 Pin/Marker,其中包含位置、图像和名称等详细信息,并将它们作为 subview 添加到 ImageView 中。

这就是展示 map 的全部内容。但我有两个重要的问题需要处理。

  1. 我应该能够检测到任何边缘/角落处相交的图钉/标记,以便我可以决定是否应该显示名称。为此,我需要一个更好的碰撞检测算法(建议一个)。每次缩放图像时都应重新绘制图钉/标记。我不想使用集群算法来组合我的引脚。
  2. 当我调整 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/

相关文章:

ios - iOS7 中一致的后台获取?

ios - Google AdMob 7 与 cocoapods 的集成

ios - Google iOS Geocoding SDK 反向经纬度到地点 ID

javascript - 我想用 Javascript API V3 创建一个 donut (里面的空白空间像一个洞)

iphone - 如何使用 Objective C 在 SQLite 中获取日期时间列

iphone - 调用 facebook ios sdk 的注销功能不会清除用户凭据

ios - 显示含有少量数据的单元格背景颜色

执行自动尺寸时 IOS Swift TableView 边框问题

iphone - iphone 上的 class_addMethod (objective-c)

ios - dispatch_queue_t 定义为强