我正在尝试制作iOS地铁地图应用程序。
我的地铁地图imageview看起来像这样:
当用户触摸关闭某处(以便用户不必触及完全位置)到电台时,我想突出显示不同颜色的车站。
考虑到这个地铁地图是一个大图像,确定该站的哪个CGPoint是用户打算触摸的最有效的方法是什么?
例如,
我想要做的是:如果一个电台位于地图上的(10.0,10.0) - >即使用户触摸 NEAR 那个点(例如:(12.3,10.3),(10.5,11.0),(13.0,12.3)等),也要选择此电台。
我正在考虑两种方法:
有一组数组(或字典),其中包含图像上工作站的所有x和y位置 - >当用户触摸图像时 - >使用毕达哥拉斯定理计算UITouch CGPoint站点之间的距离。(或许可以通过使用适当的数据结构来加快它的速度?)
地铁地图上每个站点的布局透明UIButtons。让用户触摸UIButton。(我也怀疑这是否会使应用变慢)
有人能告诉我如何从用户的UITouch CGPoint中检测到最近的站点吗?
答案 0 :(得分:1)
您的问题有各种解决方案。您正在寻找的是Nearest Neighbor Search 算法。
如果您可以优化它,您的方法1看起来很好。由于您已经知道了地图,因此将所有站点存储在已排序的数组中会有所帮助。