Создание маршрутов на карте на основе пользовательских данных

Итак, я пытаюсь сделать следующее:

  1. Имейте карту (например, Google Maps или questMaps). Совершенно не важно, какой API мне нужно использовать.
  2. На той карте есть наложение на улицы. Так скажем (например) ночью на улице плохая молния, она будет окрашена в красный цвет. Если у него хорошее освещение, он будет иметь зеленую накладку.
  3. На основе наложения карта создает собственный маршрут (например, пользователь хочет ходить только по зеленым/хорошо освещенным улицам).

Я понятия не имею, как это сделать (особенно шаг 3).


person anton k    schedule 27.06.2012    source источник


Ответы (2)


Во-первых, вам нужно решить, какие данные вам нужны. Как вы классифицируете определенные улицы как освещенные или неосвещенные? Что делать, если некоторые участки улицы хорошо освещены, а некоторые нет? Вам нужно знать местоположение каждого уличного фонаря в вашем районе? Что делать, если перегорают фары?

Выяснив, какие данные вам нужны, вам нужно создать свой набор данных. Я был бы ОЧЕНЬ удивлен, если бы эти данные уже существовали, поэтому вам, вероятно, придется собрать их самостоятельно. Либо ходи по городу и делай заметки, либо занимайся краудсорсингом проекта, либо придумай какой-нибудь другой способ.

После того, как вы собрали свои данные, изучите API рисования любого картографического инструмента, который вы хотите использовать. Все они должны иметь в своем API функции для рисования цветных линий (для улиц) или точек (для уличных фонарей) поверх существующей карты.

Наконец, изучите навигационный API выбранного вами картографического инструмента. Вы правы, это трудный шаг. Я знаю, что Google Maps позволяет указать определенные путевые точки при запросе направления; возможно, ваше приложение может рассчитать хорошо освещенные путевые точки и передать их в службу направлений Google Maps, чтобы повлиять на генерируемый им маршрут.

Удачи!

person Dan O    schedule 27.06.2012
comment
Большое спасибо. Идея путевой точки для меня прорыв. - person anton k; 27.06.2012
comment
Рад, что смог помочь. Если это было для вас полезно, подумайте о том, чтобы проголосовать и/или принять его как хороший ответ. stackoverflow.com/faq#howtoask - person Dan O; 27.06.2012

Для пользовательской маршрутизации вам нужно прочитать «Теорию графов». Это игнорирует географию карты улиц и рассматривает ее как набор перекрестков (узлов или вершин на жаргоне теории графов), соединенных ребрами. Ребрам можно присвоить веса — это могут быть длины, время в пути, единицы и нули и т. д. Что угодно. Они не могут иметь никакого отношения к положению на карте.

Таким образом, для вашего приложения вы должны присвоить большой вес неосвещенным улицам и малый вес освещенным улицам, а затем использовать стандартный алгоритм минимального веса для получения маршрута от одного узла к другому.

person Spacedman    schedule 27.06.2012