Trabajando con este tutorial de Google: https://developers.google.com/codelabs/maps-platform/google-maps-simple-store-locator
Código Github aquí: https://github.com/googlecodelabs/google-maps-simple-store-locator
archivo: app.js funciones: initMap(),calculateDistances();
Mi problema específico es que las propiedades de latlng se pierden en alguna parte. El mapa se carga y todos los puntos del mapa se cargan. Sin embargo, cuando uso la función de búsqueda/completado automático, map.data se pasa como parámetro a través de esta función (línea 218)
const rankedStores = await calculateDistances(map.data, originLocation);y se analiza con esta función (línea 234)
async function calculateDistances(data, origin) { const stores = []; const destinations = [] // Build parallel arrays for the store IDs and destinations data.forEach((store) => { const storeNum = store.getProperty('storeid'); const storeLoc = store.getGeometry().get(); console.log(storeLoc); stores.push(storeNum); destinations.push(storeLoc); });en el archivo console.log no aparecen geometrías. los objetos y las respectivas propiedades latlng están allí, pero no las coordenadas reales. cuando veo el storeNum en la consola. se muestran como deberían. Verifiqué que las coordenadas existen en jSON y los puntos del mapa prueban que map.data.loadGeoJSON funciona correctamente. Me estoy volviendo loco tratando de encontrar dónde fueron las coordenadas y cómo asegurar que pasen a la función de cálculo de distancias. Cualquier ayuda es apreciada.
Captura de pantalla B:
Para recuperar las coordenadas de un objeto google.maps.LatLng (que es lo que devuelve store.getGeometry().get() ), use la función .lat() para la latitud, la función .lng() para la longitud o la función .toUrlValue() para una cadena separada por comas que contiene ambos.
async function calculateDistances(data, origin) { const stores = []; const destinations = [] // Build parallel arrays for the store IDs and destinations data.forEach((store) => { const storeNum = store.getProperty('storeid'); const storeLoc = store.getGeometry().get(); console.log(storeLoc.toUrlValue(6)); stores.push(storeNum); destinations.push(storeLoc); });