【发布时间】:2025-12-20 10:20:18
【问题描述】:
首先,对于在代码、js、Google Apps 脚本以及 *.com 方面与成为 n00b 相关的任何错误,我们深表歉意。
我正在尝试从对 Google 地图的 Directions API 的 API 调用中提取折线。从 API 结果解析,我得到:
{routes=[{summary=A215, copyrights=Map data ©2017 Google, legs=[{duration={text=18 mins, value=1108}, start_location={lng=-0.1295712, lat=51.4227696}, distance={text=7.2 km, value=7187}, start_address=London SW16 6ET, UK, end_location={lng=-0.0706306, lat=51.3869032}, duration_in_traffic={text=15 mins, value=882}, end_address=Woodside Green, London SE25 5EU, UK, via_waypoint=[], steps=[{duration={text=1 min, value=6}, start_location={lng=-0.1295712, lat=51.4227696}, distance={text=29 m, value=29}, travel_mode=DRIVING, html_instructions=Head <b>north</b> on <b>Streatham High Rd</b>/<b>A23</b> toward <b>Streatham Common N</b>/<b>A214</b>, end_location={lng=-0.1297011, lat=51.42301399999999}, polyline={points=iozxHxhXo@X}},....
我的脚本如下:
function listJourneyPoints(value) {
//Temporary url for var value
var value = "https://maps.googleapis.com/maps/api/directions/json?origin=SW16%206ET&destination=SE25%205EU&mode=driving®ion=UK&departure_time=1507676400&key=AIzaSyDbswrt7RFy3s13ulO9BUY9jQUNchUfi4o";
//Call the google route planner api
var routeResponse = UrlFetchApp.fetch(value);
//Parse JSON from routeResponse
var json = routeResponse.getContentText();
var data = JSON.parse(json);
//Get the polyline
var polyl = data["routes"]["legs"]["steps"]["polyline"];
Logger.log (polyl);
}
我不知道如何通过数组和对象导航到折线。我知道点符号不适用于数组,因此使用了方括号,但无论我尝试什么,我都无法通过data["routes"]["legs"] 而不得到'TypeError:无法从未定义中读取属性“步骤”'。我知道问题可能在于我不了解数据结构,但经过数小时的搜索,包括使用online Json Parser 来阐明结构,我仍然卡住了,所以如果有任何帮助,我将不胜感激。谢谢!
【问题讨论】:
-
首先,“路由”不是一个对象,而是一个对象数组,因此必须使用数字进行索引; “腿”和“台阶”也是如此。因此,要获取 steps 数组中的第一个对象、legs 数组的第一个对象、routes 数组的第一个对象的折线属性,您可以编写以下内容: data.routes[0].legs[ 0].steps[0].polyline
标签: javascript json parsing google-apps-script google-directions-api