GDirections load является асинхронным. Вы не сможете использовать результаты вашего запроса на загрузку, пока не сработает событие load . Это означает, что ваша функция getDistance просто устанавливает запрос GDirections load , она не сможет получить результаты запроса синхронно (немедленно). Объект GDIrections должен уйти и сделать HTTP-запрос в Google, чтобы он мог определить расстояние между двумя точками.
Что вам нужно сделать, так это вставить свой код, который использует расстояние, в функцию callback , которую вы передали в запрос загрузки:
GEvent.addListener(directions, "load", function() {
// this is a callback function that is called after
// the getDistance function finishes.
var distance = directions.getDistance().html;
// Have a distance now, need to do something with it.
doSomethingWithTheDistanceWeGotBack (distance);
});
Вот пример использования GDirections load (получение продолжительности вождения, а не расстояния, но принцип тот же):
http://www.cannonade.net/geo.php?test=geo6
Вы можете найти источник здесь:
http://www.cannonade.net/geo6.js