Клуб API Карт

Наложение маршрутов

Пост в архиве.

Есть такая задача: "Пользователь может создать несколько маршрутов, потом они выводятся на карту и при клике на маршрут выходит информация о маршруте.". Все бы хорошо, но вот, когда маршруты пересекаются, получается части маршрутов накладываются друг на друга и при клике на маршруте в этой точке выходит информация о том маршруте, который оказался на верху. Можно как-то определить, что есть еще маршруты под этим маршрутом? Или может кому-то приходилось решать такую задачу и есть другой способ получения всех маршрутов в точки клика?

8 комментариев

наверное правильное решение - при наведении курсора на маршрут увеличивать его zIndex,чтобы он оказывался сверху

Не очень понятно. Вот есть два маршрута "Балтийск" - "Агидель" и "Гагарин" - "Ижевск". Примерно на маршруте "Гагарин" - "Казань" они отображаются, как один. Увеличу я индекс, все равно при клике я получу информацию об одном маршруте?

да, об одном.

зачем получать сразу по 2-м?

Наведите на тот что нужен до точки пересечения, и он будет наверху в местах пересечения.

либо можно в боковой панели показывать меню.

 

Посмотрите как сделано например у гугла

По 2-м надо для того, чтобы было понятно, что там не один маршрут проходит. И вообще может быть больше 2-х. На одной странице выводится по 10 маршрутов.

Сейчас выводится информация о маршруте в балуне, хотелось бы как-то придумать, если попадаем на несколько маршрутов выводить в балун минимум инфо о этих маршрутах.

То что до пересечения можно навести, это хорошо, только клиенту не очень нравится такой подход.

Возможно дублировать маршруты сбоку в меню была бы хорошая идея. Надо будет в эту сторону подумать.

Маршруты, как и любые другие геообьекты - интраверты, и по сторонам не смотрят, отвечая только за себя.

На АПИ сделать "сквозной" клик через "все линии в данной точке" можно, но очень сложно, быть может   знает как - я не решусь.

Тут надо или как-то интерфейсно по другому работать, или взять обработку на себя.

Например ловить клик на маршруте и пробивать эти координаты(ручками) через все геометрии известных маршрутов. После его глушить отрытие балуна роута и открывать свой.

Я так и предпологал. А так хотелось, чтобы это было возможно сделать легко и просто)

Делать "сквозные" события у нас нельзя.

Можно взять все маршруты, соорудить многоугольники, описывающие маршрут.

Дальше эти многоугольники поместить в geoQuery и по клику на любом маршруте смотреть, в какие из полигонов попал клик (метод GeoQueryResult.contains). И дальше обрабатывать нужные маршруты.

Спасибо! Буду пробовать.