За последние 24 часа нас посетили 9704 программиста и 470 роботов. Сейчас ищут 177 программистов ...

Как подключить файл через время

Тема в разделе "JavaScript и AJAX", создана пользователем Dron-Boy, 12 окт 2017.

  1. Dron-Boy

    Dron-Boy Новичок

    С нами с:
    20 ноя 2014
    Сообщения:
    375
    Симпатии:
    19
    Вот у меня есть код который получает массив координат и потом с этим массивом работаю что бы получитьь точки на карте гугл но уменя он выполняется не асинхронно и это очень плохо и он иногда тупит не всегда показывавет все точки иногда вобще без точек. Решил переделать что бы карта подключалась только после создания массива . Но проблема в том что я незнаю как подключить карту после ajax запроса
    https://maps.googleapis.com/maps/api/js?key=AIzaSyCLu0HbwQuOiyHrtX76vnNH5DThbXJU-Xc&callback=initMap
    Код (Javascript):
    1.   var masPoint = [];
    2.         var masPointTime = [];
    3.         var masPointId = [];
    4.       $.ajax({
    5.           url: '/wp-content/plugins/calendar_zapis_shinu/select_ajax.php',
    6.             type: 'POST',
    7.             data: {getaddr:1},
    8.             success:function(data){
    9.                
    10.                for (var i = 0; i <= $(data+'.poiadr').length; i++) {
    11.                     masPoint.push($(data+ '.poiadr').children('b:eq('+i+')').text());
    12.                     masPointId.push($(data+ '.poiadr').children('b:eq('+i+')').attr('idpoints'));
    13.                 }
    14.              
    15.                 for (var i = 0; i <= $(data+'.timeWork').length; i++) {
    16.                     masPointTime.push($(data+ '.timeWork').children('span:eq('+i+')').text());
    17.                 }
    18.             }
    19.       })
    20.    
    21.  
    22.         function getCords(point){
    23.             var lat;
    24.             var lng;
    25.             var cordenates;
    26.             $.ajax({
    27.                 url: 'http://maps.googleapis.com/maps/api/geocode/json?address='+point+'&sensor=false&language=ru',
    28.                 type: 'POST',
    29.                 data: '',
    30.                 async: false,
    31.                 success:function(data){
    32.                    lat =  parseFloat(data.results[0].geometry.location.lat);
    33.                    lng =  parseFloat(data.results[0].geometry.location.lng);
    34.                    cordenates = [lat,lng];
    35.                 }
    36.            });
    37.             return cordenates;
    38.       }
    39.          
    40.      
    41.     function initMap() {
    42.             setTimeout(function(){
    43.             var map = new google.maps.Map(document.getElementById('map'), {
    44.               zoom: 10,
    45.               center: {lat: 59.8570118, lng: 30.4989483}
    46.             });
    47.             setMarkers(map);
    48.             },1000)
    49.       }
    50.      
    51.       function setMarkers(map) {
    52.         for (var i = 0; i < masPoint.length; i++) {
    53.            
    54.           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>';
    55.           cordenates = getCords(masPoint[i])
    56.           var beach = cordenates;
    57.           var marker = new google.maps.Marker({
    58.             position: {lat: beach[0], lng: beach[1]},
    59.             map: map,
    60.             zIndex: 10
    61.           });
    62.            attachSecretMessage(marker, contentString);
    63.         }
    64.             function attachSecretMessage(marker, contentString) {
    65.               var infowindow = new google.maps.InfoWindow({
    66.                 content: contentString
    67.               });
    68.  
    69.               marker.addListener('click', function() {
    70.                 infowindow.open(marker.get('map'), marker);
    71.               });
    72.             }
    73.         }
    P.S. Не ругайтесь на код он отстойный...
     
  2. TeslaFeo

    TeslaFeo Активный пользователь

    С нами с:
    9 мар 2016
    Сообщения:
    1.565
    Симпатии:
    354
    код карты выносишь в отдельный файл, в функции success после всех телодвижений делаешь еще один ajax запрос и подгружаешь карту.
     
    Dron-Boy нравится это.
  3. Dron-Boy

    Dron-Boy Новичок

    С нами с:
    20 ноя 2014
    Сообщения:
    375
    Симпатии:
    19