1

El primer console log muestra la información correcta, pero el segundo aparece como undefined y no encuentro el motivo.

 var addresses = [
 {name: 'Asensio Gonzalez', address:'C/San Marcos 377, 1ºB, 28030 Madrid' },
 {name: 'Javier Gomez', address:'C/San Pere 152, 4ºC, esc drc, 14050 Malaga'},
 {name: 'Irene Montealegre', address:'C/San Juan 8, 1ºB, 33500 Alicante'},
 {name: 'Tobias Ibarretxe', address:'C/San Antonio 7, 1ºB, 12500 Donostia'},
 {name: 'José García', address:'C/San Fermin 3, 1ºB, 13600 Caceres'},
 ];
 var coords=[];

    for (var x = 0; x < addresses.length; x++) {

        $.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address='+addresses[x].address+'&sensor=false', null, function (data) {
            var lat = data.results[0].geometry.location.lat
            var lng = data.results[0].geometry.location.lng;
    coords.push( {lat:lat,lng:lng} );
    //console.log({lat:lat,lng:lng} )

        });
    }
    console.log('Coordenadas '+ coords );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Pablo Lozano
  • 45,934
  • 7
  • 48
  • 87
Nacho
  • 55
  • 5
  • El problema es que estás haciendo 5 llamadas AJAX y hasta que no se resuelvan todas no tendrás los datos, pero los estás intentando mostrar incluso antes de que la primera llamada se haya completado. – Pablo Lozano Sep 06 '18 at 11:01
  • Se movio la pregunta a este post https://es.stackoverflow.com/questions/194554/como-definir-una-funci%C3%B3n-callback-en-una-petici%C3%B3n-getjson – Ruben Hernandez Sep 06 '18 at 12:01

1 Answers1

0

Mira este ejemplo

<script>
var addresses = [
    {name: 'Asensio Gonzalez', address:'C/San Marcos 377, 1ºB, 28030 Madrid' },
    {name: 'Javier Gomez', address:'C/San Pere 152, 4ºC, esc drc, 14050 Malaga'},
    {name: 'Irene Montealegre', address:'C/San Juan 8, 1ºB, 33500 Alicante'},
    {name: 'Tobias Ibarretxe', address:'C/San Antonio 7, 1ºB, 12500 Donostia'},
    {name: 'José García', address:'C/San Fermin 3, 1ºB, 13600 Caceres'},
];
var coords=new Array();;
for (var x = 0; x < addresses.length; x++) {
    $.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address='+addresses[x].address+'&sensor=false', null, function (data) {
        var lat = data.results[0].geometry.location.lat
        var lng = data.results[0].geometry.location.lng;
        coords.push( new Array({
            lat:lat,
            lng:lng
        }));
        //console.log({lat:lat,lng:lng} )
    });
}
console.log(coords);
</script>

Resuelve algo como esto introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí Saludos :)

Ruben Hernandez
  • 1,098
  • 3
  • 13