заставляя карты Google вести маршруты, ведущие себя как настоящие карты Google - PullRequest
1 голос
/ 11 июня 2011

Я делал маршруты в своем картографическом приложении с использованием directionsRenderer, поэтому он отображает как маршрут (на карте), так и список направлений в формате html. Мое приложение работает в основном как этот пример: http://code.google.com/apis/maps/documentation/javascript/examples/directions-draggable.html

Тем не менее, теперь меня попросили сделать его немного более похожим на указания на картах Google, например здесь

Моему клиенту нужны маленькие всплывающие окна при наведении курсора на элементы HTML, а также маленькие значки, показывающие поворот вправо, указатель влево, объединение и т. Д.

Мне удалось отобразить свой собственный html из ответа DirectionsService, подключить события для зависания и связать их с точками на карте, но я мог бы использовать справку:

1) Получение иконок по очереди. Я полагаю, что это нелегко, потому что я получаю каждый шаг в виде HTML-текста («Сверните на выезд 433 слева, чтобы выехать на I-80 E в направлении Bay Bridge / Oakland»), и я полагаю, что может быть сложно разобрать разумно, чтобы определить какой значок показать

2) создание маленьких всплывающих окон над картой. Хотя я могу сделать сами всплывающие окна, вероятно, сложно или невозможно сделать это точно так же, потому что у меня нет короткой версии инструкций.

В любом случае, я подумал, что проверю, знает ли кто-нибудь способ сделать что-то подобное - не обязательно точно, но только ближе к нему - или если мне просто не повезло, потому что Google не имеет ' t сделал любую из этих функций доступной через API.

1 Ответ

1 голос
/ 12 июня 2011

Вы правы, что вам придется исследовать строки, чтобы получить значки хода. Вы можете проанализировать объект DirectionsResult самостоятельно (он является "JSON-подобным" согласно документации Google) вместо того, чтобы использовать DirectionsRenderer, если хотите, но я не думаю, что он вам что-нибудь даст. Вот как это будет происходить:

  • Свойство DirectionsResult.route будет массивом объектов DirectionsRoute. Если вы не установили provideRouteAlternatives на true, то в массиве будет только один объект DirectionsRoute.

  • Объект DirectionsRoute, в свою очередь, имеет свойство, называемое leg. Это свойство является массивом объектов DirectionsLeg. Если вы не указали ни одной путевой точки (то есть промежуточного пункта назначения), а только начальную и конечную точки, то в этом массиве будет также только один объект.

  • Объект DirectionsLeg, в свою очередь, имеет свойство, называемое steps. Это будет массив, в котором каждый элемент будет объектом DirectionsStep.

  • У объекта DirectionsStep есть свойство, называемое инструкциями. Это строка, которую вы должны изучить с помощью регулярного выражения или чего-то еще, чтобы выяснить, какой значок поворота использовать. (Возможно, с этим легче работать, чем с HTML, о котором вы упомянули, и который, как я полагаю, исходит от DirectionsRenderer. Или, возможно, не все так просто. Я не уверен. На самом деле я никогда не был сделал это.)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...