Google Maps API в скриптах приложений не работает - PullRequest
0 голосов
/ 09 мая 2018

Я использую скрипт приложений Google для кодирования дальномера для Карт Google. Я нашел примеры таких, но они продолжают терпеть неудачу, поэтому я решил написать свой код. К сожалению, это происходит с той же ошибкой:

TypeError: Cannot read property "legs" from undefined. (line 16).

Кажется, что иногда это работает, а иногда нет. У меня есть несколько (3) мест в моем листе, которые вызывают одни и те же функции, и иногда одно или несколько возвращают действительный ответ.

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

Есть идеи, что может пойти наперекосяк?!

Заранее спасибо,

Mike

function mikeDistance(start, end){
  start = "CV4 8DJ";
  end = "cv4 9FE";

  var maps = Maps;
  maps.setAuthentication("#####", "#####");
  var dirFind = maps.newDirectionFinder();
  dirFind.setOrigin(start);
  dirFind.setDestination(end);

  var directions = dirFind.getDirections();
  var rawDistance = directions["routes"][0]["legs"][0]["distance"]["value"];
  var distance = rawDistance/1609.34;
  return distance;
}

1 Ответ

0 голосов
/ 14 мая 2018

Вот мое краткосрочное решение, пока проблема устраняется.

Не идеально, но, по крайней мере, максимально сокращает использование вашего предела API.

function getDistance(start, end) {

 return hackyHack(start, end, 0);
}

function hackyHack(start, end, level) {
  if (level > 5) {
    return "Error :(";
  }
  var directions = Maps.newDirectionFinder()
     .setOrigin(start)
     .setDestination(end)
     .setMode(Maps.DirectionFinder.Mode.DRIVING)
     .getDirections();
  var route = directions.routes[0];

  if (!route) return hackyHack(start, end, level+1); // Hacky McHackHack

  var distance = route.legs[0].distance.text;
  // var time = route.legs[0].duration.text;
  return distance;
}
...