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

如何在iOS上从UITouch查找最近的站点,ios,objective-c,cgpoint,Ios,Objective C,Cgpoint,我正在尝试制作iOS地铁地图应用程序 我有一个地铁地图图像视图,看起来像这样: 当用户触摸电台的某个位置时,我想用不同的颜色突出显示电台 考虑到这张地铁地图是一张大图,那么用什么最有效的方法来确定用户想要触摸的是车站的哪个点 比如说, 我想做的是:如果一个站点位于地图上的(10.0,10.0)->选择这个站点,即使用户触摸到该点附近的某个地方(例如:(12.3,10.3),(10.5,11.0),(13.0,12.3)等等) 我想有两种方法可以做到这一点: 拥有一组数组(或字典),其中包含图像

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

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

当用户触摸电台的某个位置时,我想用不同的颜色突出显示电台

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

比如说,

我想做的是:如果一个站点位于地图上的(10.0,10.0)->选择这个站点,即使用户触摸到该点附近的某个地方(例如:(12.3,10.3),(10.5,11.0),(13.0,12.3)等等)

我想有两种方法可以做到这一点:

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

  • 在地铁地图上为每个车站布置透明的按钮。让用户触摸UIButton(我也怀疑这是否会让应用程序变慢)


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

    有多种解决方案。你要找的是一个算法

    如果可以优化方法1,它看起来很好。因为您已经知道地图,所以将所有站点点存储在一个排序数组中会有所帮助