我使用谷歌应用程序脚本为谷歌地图的距离查找器编码。我已经找到了这样的例子,但是他们一直都在失败,所以我想我自己编写了代码。可悲的是,这失败了同样的错误:
TypeError: Cannot read property "legs" from undefined. (line 16).
似乎它有时会起作用,有时候不起作用。我的工作表中有几个(3)位置调用相同的函数,有时一个或多个将返回有效的响应。
我在其他地方看到人们建议使用API密钥以确保您获得良好的响应,这就是我在下面实现的内容。 (api键被编辑!是否有一个很好的方法来判断它们是否已被识别?)
任何想法可能会出错?!
提前致谢,
麦克
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;
}
答案 0 :(得分:1)
这是我的短期解决方案,而问题正在解决。
不理想,但至少会尽可能减少使用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;
}