Tengo una lista de propiedades en un propertyArray y envío cada dirección a mapBox Geocoding para que devuelva las coordenadas. El problema es que solo estoy accediendo a la última variable i dentro del ciclo .then.
Ejemplo: Quiero acceder a la propiedad[3].ciudad, pero todo devolverá la propiedad[77].ciudad 77 veces. ¿Cómo puedo acceder a la variable i correcta?
Intenté establecer la respuesta en otra variable fuera de la función .then. He intentado configurar otra función para la geocodificación. ¿Alguna recomendación? ¡Gracias!
var markers = []; for (var i in propertyArray) { const mapboxClient = mapboxSdk({ accessToken: mapboxgl.accessToken }); var response = null; mapboxClient.geocoding .forwardGeocode({ query: propertyArray[i].address + ' '+ propertyArray[i].city + ', NV', autocomplete: false, limit: 1 }) .send() .then((response) => { if ( !response || !response.body || !response.body.features || !response.body.features.length ) { console.error('Invalid response:'); console.error(response); return; } const feature = response.body.features[0]; response = feature; markers[i] = document.createElement('div'); markers[i].className = 'marker'; markers[i].innerHTML = propertyArray[i].price; markers[i].style.backgroundColor = `white`; markers[i].style.width = `50px`; markers[i].style.height = `50x`; markers[i].style.backgroundSize = '100%'; // Create a marker and add it to the map. new mapboxgl.Marker(markers[i]) .setLngLat(feature.center) //.setPopup(popup) // sets a popup on this marker .setPopup(new mapboxgl.Popup({ offset: 25 }) // add popups .setHTML(propertyArray[i].address)) .addTo(map); });}
});