Как и в заголовке, читается нижний код, даже если цикл вверху еще не закончен.
Когда вы смотрите в консоль, «строки» на расстоянии [$ x].row [0] .elements [0] .distance.text еще не определен, потому что метод push еще не действует.
Кстати, это событие вызывается после щелчка события, поэтому при первом щелчке в массиве ничего не будет, но при втором щелчке он будет работать так, как я хотел.
iЯ уже пытался использовать обещание и ожидание, но все еще то же самое.
var distanceService = new google.maps.DistanceMatrixService;
for($z=0;$z<ppos.length;$z++){
distanceService.getDistanceMatrix({
origins: [pos],
destinations: [ppos[$z]],
travelMode: 'DRIVING',
},
function (response, status) {
if (status != google.maps.DistanceMatrixStatus.OK) {
console.log('Error:', status);
} else {
console.log(response);
distance.push(response);
}
}
);
}
var content="";
if(distance.length>0){
for($x=0;$x<3;$x++){
content+='<div class="row"><div class="col-lg-12"><h4><strong>'+plists[$x].name+'</strong></h4><p><em>Address:'+plists[$x].vicinity+'</em></p><p><em>Distance:'+distance[$x].rows[0].elements[0].distance.text+'</em></p></div></div>';
}
}
Что мне нужно, так это то, что значения должны быть помещены в массив расстояний, прежде чем читать нижние коды.