2016-07-16 1 views
1

Я пытаюсь отображать Bing Map всякий раз, когда пользователь нажимает на определенный элемент HTML, но Microsoft.Maps.Map всегда возвращает undefined даже после установки timeInterval, я также попытался вставить новые скрипты с onscriptload onclick event. Ниже приведен мой пример кода.Карта всегда возвращает undefined

$(document).ready(function(){ 

    var script = document.createElement("script"); 
     script.type = 'text/javascript'; 
     script.src = 'https://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0&onscriptload=getMap'; 

     document.head.appendChild(script); 

}) 


$("#showMap").click(function(){ 
getMap(); 

}) 
function getMap(){ 
console.info(Microsoft.Maps.Map); 
    var time = ""; 
    var map 
    var mapControl = Microsoft.Maps.Map; 
     if(mapControl == undefined){ 
      time = setInterval(function(){ getMap() }, 8000); 
     } 
     else{ 
      map = new Microsoft.Maps.Map(document.getElementById('address1_composite'), {credentials: 'Cred'}); 
      clearInterval(time); 
     }  
} 

К сожалению, я знаю, этот вопрос уже задавал здесь, в этой связи, Bing map is undefined after loading Javascript file

У нас есть один и тот же сценарий, но шахта не работает, как ожидалось, хотя я попробовал предложенный ответ.

+0

Где вы проверить код? один сайт, как jsfiddle, на localhost, ...? Какое сообщение об ошибке отображается в консоли? –

+0

Я тестирую его только через консоль, так как он связан с crm. Он говорит, что Microsoft.Maps.Map не определен. – user3197077

+0

Затем вам нужно проверить вкладку сети вашего браузера. Я почти уверен, что загрузка скрипта по какой-то причине является блоком. –

ответ

0

Что нужно делать вместо создания карты при щелчке элемента, загружает карту один раз, а затем скрывает/показывает ее при нажатии кнопки. Это значительно сократит количество нагрузок на карту, что означает, что меньше транзакций генерируется и, следовательно, снижает затраты.

Кроме того, вместо загрузки сценария карты по требованию, как вы, использовать контроль Bing Maps V8 и загрузить его в асинхронном режиме: https://msdn.microsoft.com/en-us/library/mt712557.aspx