2016-07-16 96 views
1

我一直試圖顯示必應地圖,只要用戶點擊某個HTML元素,但Microsoft.Maps.Map總是返回未定義,即使設置了timeInterval後,我也嘗試插入新的腳本onscriptload onclick事件。 以下是我的示例代碼。地圖總是返回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這樣的網站,在本地主機上,...?控制檯中顯示什麼錯誤信息? –

+0

我只通過控制檯測試它,因爲它連接到crm,它說Microsoft.Maps.Map是未定義的。 – user3197077

+0

然後您需要檢查您的瀏覽器的網絡選項卡。我很確定腳本的加載是由於某種原因阻塞的。 –

回答

0

單擊元素時,您應該做什麼而不是創建地圖,只需加載地圖一次,然後在單擊按鈕時隱藏/顯示它。這將顯着減少地圖加載的數量,這意味着生成更少的交易並因此降低成本。

此外,而不是裝上喜歡你的需求映射腳本中,使用Bing Maps V8控制和異步加載:https://msdn.microsoft.com/en-us/library/mt712557.aspx