2016-07-16 98 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