2016-11-26 16 views
1

Я хочу добавить маркеры на карте google, когда получаю данные ajax-маркеров и вызываю функцию initMap после того, как эта карта не загружается, но когда я добавляю предупреждение перед initMap функция, карта загружается.Зачем мне нужно писать alert() после вызова google map api

это работает и показывает карту и маркеры:

$('#ddlLatLog').on("change", function() { 
    jQuery.getJSON('@Url.Action("GetLatLog", "MyTheme", new { area = "" })', { 
     id: $(this).find('option:selected').attr('Value') 
    }, 
    function(jdata) { 
     markermap = jdata; 
    }); 
    alert(markermap); 
    initMap(centermap, markermap); 
}); 

не нагружают карту

$('#ddlLatLog').on("change", function() { 
    jQuery.getJSON('@Url.Action("GetLatLog", "MyTheme", new { area = "" })', { 
     id: $(this).find('option:selected').attr('Value') 
    }, 
    function(jdata) { 
     markermap = jdata; 
    }); 
    // alert(markermap); 
    initMap(centermap, markermap); 
}); 

вызов Google API:

<script src="http://maps.google.com/maps/api/js?v=3.26&key=...callback=initMap" async defer></script> 

зачем мне предупреждение?

+0

Это, несомненно, не работает вообще, потому что у вас есть недостающая одинарная кавычка в вашем selector.' $ ('# ddlLatLog) .он 'должен быть' $ ('# ddlLatLog'). on' – NewToJS

+0

ops я забыл, когда код копирования tanQ, но в моем проекте есть '': D tanQ –

ответ

2

Причина, по которой карта не загружается без alert, заключается в том, что jQuery.getJSON является звонком async. Поэтому, когда вы ставите alert, браузер получает время, чтобы завершить вызов ajax, и ответ возвращается до того, как вызывается initMap. Но в другом случае это не происходит, когда вы удаляете alert. Чтобы преодолеть это; Вам просто нужно, чтобы переместить initMap(centermap, markermap); в обработчике Успеха jQuery.getJSON следующим образом:

$('#ddlLatLog').on("change", function() { 
    jQuery.getJSON('@Url.Action("GetLatLog", "MyTheme", new { area = "" })', { 
     id: $(this).find('option:selected').attr('Value') 
    }, 
    function(jdata) { 
     markermap = jdata; 

     initMap(centermap, markermap); 
    }); 
}); 
+1

Также отсутствует одиночная кавычка в селекторе '$ ('# ddlLatLog) .on' должен быть '$ ('# ddlLatLog'). on' – NewToJS

+0

Ох ... хорошо поймать. Я только что скопировал код OP, не видя этой строки ..thanks @NewToJS. – vijayP

+0

ops nice now fine work tan Q –

Смежные вопросы