google-maps-api-3 - Apps脚本中的Google Maps API不断失败
问题描述
我正在使用谷歌应用程序脚本为谷歌地图编写测距仪。我找到了这样的例子,但他们一直失败,所以我想我会自己编写代码。可悲的是,这因同样的错误而失败:
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;
}
解决方案
这是我在解决问题时的短期解决方案。
不理想,但至少尽可能减少使用您的 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;
}
推荐阅读
- laravel - Laravel 作业失败问题
- php - php表单不显示输出?
- apache-spark - Spark-SQL 查询的 SparkException 错误
- javascript - 在滑块引导的刻度之间放置标签
- reactjs - 使用 axios 和 React 创建轮询
- python - 对于只能迭代一次的集合,什么是好的 API?
- java - 使用 @Component 强制使用 @Autowired 使用
- excel - 在表格中逐行“直到”直到在VBA中找到第一个彩色单元格?
- unit-testing - 如何在集成测试中模拟 BLoC
- activerecord - 如何在 `around_destroy` 回调中处理 Active Record `destroy` 的结果