Вот у меня есть код который получает массив координат и потом с этим массивом работаю что бы получитьь точки на карте гугл но уменя он выполняется не асинхронно и это очень плохо и он иногда тупит не всегда показывавет все точки иногда вобще без точек. Решил переделать что бы карта подключалась только после создания массива . Но проблема в том что я незнаю как подключить карту после ajax запроса https://maps.googleapis.com/maps/api/js?key=AIzaSyCLu0HbwQuOiyHrtX76vnNH5DThbXJU-Xc&callback=initMap Код (Javascript): var masPoint = []; var masPointTime = []; var masPointId = []; $.ajax({ url: '/wp-content/plugins/calendar_zapis_shinu/select_ajax.php', type: 'POST', data: {getaddr:1}, success:function(data){ for (var i = 0; i <= $(data+'.poiadr').length; i++) { masPoint.push($(data+ '.poiadr').children('b:eq('+i+')').text()); masPointId.push($(data+ '.poiadr').children('b:eq('+i+')').attr('idpoints')); } for (var i = 0; i <= $(data+'.timeWork').length; i++) { masPointTime.push($(data+ '.timeWork').children('span:eq('+i+')').text()); } } }) function getCords(point){ var lat; var lng; var cordenates; $.ajax({ url: 'http://maps.googleapis.com/maps/api/geocode/json?address='+point+'&sensor=false&language=ru', type: 'POST', data: '', async: false, success:function(data){ lat = parseFloat(data.results[0].geometry.location.lat); lng = parseFloat(data.results[0].geometry.location.lng); cordenates = [lat,lng]; } }); return cordenates; } function initMap() { setTimeout(function(){ var map = new google.maps.Map(document.getElementById('map'), { zoom: 10, center: {lat: 59.8570118, lng: 30.4989483} }); setMarkers(map); },1000) } function setMarkers(map) { for (var i = 0; i < masPoint.length; i++) { var contentString = '<div><b>'+masPoint[i]+'</b><br><b>'+masPointTime[i]+'</b><br><a href="http://shinomontaj.c-p.in.ua/zakaz/?id='+masPointId[i]+'">Заказать шиномонтаж</a></div>'; cordenates = getCords(masPoint[i]) var beach = cordenates; var marker = new google.maps.Marker({ position: {lat: beach[0], lng: beach[1]}, map: map, zIndex: 10 }); attachSecretMessage(marker, contentString); } function attachSecretMessage(marker, contentString) { var infowindow = new google.maps.InfoWindow({ content: contentString }); marker.addListener('click', function() { infowindow.open(marker.get('map'), marker); }); } } P.S. Не ругайтесь на код он отстойный...
код карты выносишь в отдельный файл, в функции success после всех телодвижений делаешь еще один ajax запрос и подгружаешь карту.
Спасибо слушай а ты не можешь мне помочь с этой темой решил хранить координаты в базе. https://php.ru/forum/threads/kak-poluchit-json.66512/