iOS 如何从 UITouch 找到最近的站点
How to find closest station point from UITouch on iOS
我正在尝试制作 iOS 地铁地图应用程序。
我有一个看起来像这样的地铁地图图像视图:
当用户触摸某个地方时 close(这样用户就不必触摸 exact 位置)到车站,我想用不同的颜色突出显示车站。
考虑到这张地铁地图是一张大图,确定用户打算触摸的是车站的哪个 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 检测最近的站点?
您的问题有多种解决方案。您正在寻找的是 Nearest Neighbor Search 算法。
如果您可以优化您的方法 1,它看起来不错。由于您已经知道地图,因此将所有站点存储在排序数组中会有所帮助。
我正在尝试制作 iOS 地铁地图应用程序。
我有一个看起来像这样的地铁地图图像视图:
当用户触摸某个地方时 close(这样用户就不必触摸 exact 位置)到车站,我想用不同的颜色突出显示车站。
考虑到这张地铁地图是一张大图,确定用户打算触摸的是车站的哪个 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 检测最近的站点?
您的问题有多种解决方案。您正在寻找的是 Nearest Neighbor Search 算法。
如果您可以优化您的方法 1,它看起来不错。由于您已经知道地图,因此将所有站点存储在排序数组中会有所帮助。