如何在 iOS 上从 UITouch 找到最近的车站点

Posted

技术标签:

【中文标题】如何在 iOS 上从 UITouch 找到最近的车站点【英文标题】:How to find closest station point from UITouch on iOS 【发布时间】:2015-05-30 03:50:58 【问题描述】:

我正在尝试制作ios地铁地图应用程序。

我有一个地铁地图图像视图,看起来像这样:

当用户触摸某处接近(这样用户不必触摸确切位置)到车站时,我想突出显示车站用不同的颜色。

考虑到这张地铁地图是一张大图,确定车站的哪个 CGPoint 是用户想要触摸的最有效的方法是什么?

例如,

我想要做的是:如果一个车站位于地图上的 (10.0, 10.0) -> 即使用户触摸某处 NEAR 该点(例如:( 12.3, 10.3), (10.5, 11.0), (13.0, 12.3) 等)

我正在考虑两种方法来做到这一点:

    有一组数组(或字典),其中包含图像上站点的所有 x 和 y 位置 -> 当用户触摸图像时 -> 使用毕达哥拉斯定理计算 UITouch CGPoint 之间的距离.(也许可以通过使用适当的数据结构来加快速度?)

    为地铁地图上的每个车站布局透明的 UIButton。让用户触摸 UIButton。(我也质疑这是否会使应用程序变慢)

谁能告诉我如何从用户的 UITouch CGPoint 检测最近的车站点?

【问题讨论】:

【参考方案1】:

您的问题有多种解决方案。您正在寻找的是Nearest Neighbor Search 算法。

如果你可以优化它,你的方法 1 看起来不错。由于您已经知道地图,因此将所有站点点存储在排序数组中会有所帮助。

【讨论】:

以上是关于如何在 iOS 上从 UITouch 找到最近的车站点的主要内容,如果未能解决你的问题,请参考以下文章

UITouch 不适用于 ios8

如何在 iOS 上从 Mapbox 解码“编码折线”

如何在 iOS 10 中获取 Apple Maps 的“查找我的车”的“停放位置”信息

如何在 iOS 10 上从 Xcode 安装应用程序?

如何在 iOS 上从 Web 下载原始字节

iOS开发UITouch触摸API简介