2012-02-27 6 views
0

Я использую следующий, чтобы получить массив путевых точек:Google Maps API Использования Точки LatLng

var waypoints = displayer.getDirections().routes[0].legs[0].via_waypoints; 

Это возвращает массив координат, отформатированных круглые скобки вокруг него, как (37.09024, -95,71289), (37.09324, -95.71259).

Когда я пытаюсь вставить эти координаты в качестве путевых точек по новому маршруту, он ломается. Есть ли что-то, что мне нужно сделать, чтобы проанализировать этот массив и получить координаты без скобок вокруг значений lat/lng?

Спасибо!

ответ

0

Поскольку .via_waypoints возвращает координату LatLng, преобразование ее в строку дает скобки.

Единственный способ, которым я могу найти это, - использовать регулярное выражение, чтобы вырезать скобки вокруг координат после объединения массива в строку.

Я добавляю к строке каждый раз, когда создается новая путевая точка, а затем обновляю скрытый ввод координат точки.

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

0

Google Maps API Reference documentation показывает только один конструктор для LatLng объекта

LatLng(lat:number, lng:number, noWrap?:boolean) 

Так что, если вы просто передавая строку как "(37.09024, -9571289)" или массив строк в LatLng конструктор, вы не можете ожидать, что она волшебным образом преобразовать этот параметр в координаты.

Вы можете хранить координаты вашего маршрута в 2d массив

var Points = [ 
    [11.2222, 22.3333], 
    [33.4444, 44.5555] 
    ]; 

и contstruct new google.maps.LatLng(x,y) объекты в цикле, при прохождении каждого внутреннего элемента из Points массива.

.. 
ContstructedLatLng[i] = new google.maps.LatLng(Points[i][0],Points[i][2]); 
.. 

Также вы можете использовать Firebug расширение для Mozilla Firefox для отладки JavaScript во время выполнения.

+0

.via_waypoints автоматически возвращает Lat/LNG координаты в скобках, так что если я пытаюсь и сохранить их во втором массиве, не будет ли это выглядеть следующим образом: вар Очки = [ [(лат, LNG)], [(lat, lng)] ]; – HWD

+0

@HWD да, будет. Вы можете изменить свойство '.via_waypoints' для возврата массива' LatLng' вместо этого, если сможете. В качестве альтернативы вы можете реализовать другой метод, который читает '.via_waypoints' и другие аналогичные объекты и создает объекты LatLng' для их рендеринга. Вы можете назвать его обработчиком рендеринга. –

+0

Регулярное выражение для выделения круглых скобок кажется громоздким. У вас есть лучшее предложение для создания экземпляра массива LatLng? Спасибо за вашу помощь. – HWD

Смежные вопросы