Хорошо, у меня есть приложение, которое использует систему отображения для рисования линий. Каждая строка A, B определяется в формате широта / долгота. Когда пользователь щелкает карту, все, что мне дается, это отдельная точка C, где пользователь щелкает в формате широта / долгота. Я хочу дать пользователю возможность выбирать линии на карте, нажав. Проблема в том, что из-за изменяющихся уровней масштабирования пользователю очень трудно щелкнуть точно вдоль линии. Лучшее, на что я могу надеяться, это то, что они нажимают в пределах некоторого порогового расстояния, которое я определяю. Как я могу выяснить, что пользователь нажал или обоснованно приблизился к строке, содержащей только эту информацию?
У меня есть грубая идея для алгоритма, но я не конкретизировал его, и я не уверен, является ли это наиболее эффективным способом сделать это. Поскольку на экране в любой момент потенциально может быть много строк, алгоритм должен быть достаточно быстрым.
То, что я до сих пор придумал, это сначала проверить расстояние AC и BC. Если какое-либо расстояние больше, чем AB, то пользователь не щелкнул по линии. Если он пройдет эту проверку, то я рассчитываю углы CAB и CBA. Если C находится точно на линии, то оба угла должны быть равны 0, я думаю, мой триг немного ржавый. В противном случае, чтобы определить, достаточно ли близок C, я выберу наименьший из двух рассчитанных углов и посмотрю, не падает ли он ниже некоторого предопределенного порога.
Я на правильном пути или далеко? Есть идеи получше?