Estoy tratando de devolver el nombre de la arrival_stop.name de llegada desde la API de direcciones de Google en una función de Apps Script. Aquí está mi código:
const GOOGLEMAPS_STEPS_TRANSIT_DETAILS = (origin, destination, mode = 'transit') => { const { routes = [] } = Maps.newDirectionFinder() .setOrigin(origin) .setDestination(destination) .setMode(mode) .getDirections(); if (!routes.length) { throw new Error('No route found!'); } var stepTransitDetails = routes .map(({ legs }) => { return legs.map(({ steps }) => { return steps.map((step) => { return step.transit_details.arrival_stop.name; }); }); }) .join(' , '); return stepTransitDetails; };Error dado:
TypeError: Cannot read property 'arrival_stop' of undefined (line 228).El resultado deseado es una lista de paradas dentro del paso de tránsito; por ejemplo, si el paso toma el tren de la línea Piccadilly desde Leicester Square hasta Kings Cross, el resultado sería la lista de estaciones en las que se detendrá.
Tengo este mismo código funcionando cuando step.html_instructions en lugar de step.transit_details.arrival_stop.name y si .arrival_stop.name devuelve [object Object],,object Object], lo que significa que está reconociendo los pasos que involucran tránsito, pero agregar el .arrival_stop da un error.
Trabajo basado en Google API Docs
Cuando vi los datos de las routes , parece que hay objetos sin incluir la propiedad de transit_details en el step . Pensé que esta podría ser la razón de su problema. Si desea recuperar step.transit_details.arrival_stop.name , ¿qué tal la siguiente modificación?
var stepTransitDetails = routes .map(({ legs }) => { return legs.map(({ steps }) => { return steps.map((step) => { return step.transit_details.arrival_stop.name; }); }); }) .join(' , '); var stepTransitDetails = routes .map(({ legs }) => { return legs.map(({ steps }) => { return steps.filter(({ transit_details }) => transit_details).map(({ transit_details }) => { return transit_details.arrival_stop.name; }); }); }) .join(' , ');filter se usa para recuperar el objeto, incluidos los transit_details .