每当用户点击某个HTML元素时,我一直在尝试显示Bing Map,但是即使在设置了timeInterval之后,Microsoft.Maps.Map也始终返回undefined,我还尝试使用onscriptload onclick事件插入新脚本。 以下是我的示例代码。
$(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 :(得分:0)
单击元素时应该执行的操作而不是创建地图,只需加载地图一次,然后在单击按钮时隐藏/显示地图。这将显着减少地图载荷的数量,这意味着生成的交易更少,从而降低了成本。
此外,不是像您一样按需加载地图脚本,而是使用Bing Maps V8控件并以异步方式加载它:https://msdn.microsoft.com/en-us/library/mt712557.aspx