По договоренности
Требуется создать поисковую программу, которая будет находить совпадение маршрутов попутчиков (пассажира и водителя). Движения пассажира будут в виде точек – Широты и Долготы посадки и высадки. Например
46.46117, 30.70489 (посадка пассажира в начале движения)
46.48109, 30.73991 (высадка пассажира в конце движения)
маршрут движения водителя будет записан в виде промежуточных точек движения в таком виде:
46.46117, 30.70489 (начало движения водителя)
46.46093, 30.71107
46.46090, 30.71571
46.46394, 30.72098
46.46740, 30.72656
46.46909, 30.73038
46.47328, 30.73086
46.47736, 30.73163
46.47695, 30.73772
46.48115, 30.73849
46.48109, 30.73991 (конечная точка водителя)
Необходимо, чтобы программа находила сходство маршрутов и, в случае совпасения вариантов, выдавала на сайт сохранённый в базе айфрейм ранее записанный пассажиром или водителем с карт Google Maps в таком виде:
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="maps.google.ru/maps?f=q&s... /><small><a href="maps.google.ru/maps?f=q&s..." style="color:#0000FF;text-align:left"> Просмотреть увеличенную карту</a></small>.
Нюансы:
1) пассажир может подсесть к водителю не обязательно в начальной-конечной точках. Соответсвие может найтись и по трассе (в промежуточных точках).
2) необходимо учитывать "шаговой доступности" для посадки-высадки. Разница в один квартал (примерно) составляет разницу в 0,006
Например есть пара ШиД
46.46085, 30.70487
желательно включить в охват поиска квадрат в котором эта ШиД будет в середине. То есть в любую сторону нужно будет пройти один квартал что бы сесть в машину или заехать за пассажиром. Может попробовать создать алгоритм поиска, чтоб например,
если пользователь вводит свою начальную точку в виде 46.46085, 30.70487 то
точку 46.46085 рассматривать как диапазон между (46.46085-0.006) и (46.46085+0.006)
аналогично с долготой. Тогда точная цифра будет "в коробочке" и в выдаче будет больше вариантов (см приложение-рисунок).
3) Необходимо чтоб учитывалось направление маршрута (очередность цифр в столбике будет постоянным – начало движения всегда идёт в верхней цифрой и окончание нижней).
На совпадения будут накладываться следующие ограничения:
1) в поиске будут участвовать только связка водитель + пассажир (не водитель +водитель или пассажир+пассажир)
2) времени начала движения (поиск по умолчанию +- 15 минут от старта). Если, в поиске по умолчанию не найдётся подходящей пары, то выскочит менюшка выбора в которой при помощи ниспадающего окна можно будет увеличивать интервал поиска.
а) точное +- 30 минут в) точное +-сутки (для разовых дальних поездок).
3) поиск среди регулярных или разовых поездок.
- Регулярные, те , которые будут помечаться галочками по дням недели
а) рабочие минус выходные
б) выходные минус рабочие
с) рабочие плюс выходные дни