【问题标题】:Issue with Bing Map --p_elSource.attachEvent is not a function必应地图问题 --p_elSource.attachEvent 不是函数
【发布时间】:2011-04-06 12:31:35
【问题描述】:

我在使用 Bing 地图时遇到了重大问题。我在用 : http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3

首先我在萤火虫中遇到错误:

 this.CreditsFor=function(a,i,j,h)
 {
  var e=[];
  if(a!="undefined"&&a!=null&&typeof m_tableKeys[a]!="undefined"&&
   ........
   MVC_Init_FlatlandView_Drawing();
   MVC_Init_View3D_Drawing()};
   if(typeof closeDependency!="undefined")
       closeDependency("mapcontrol.js")

之后,我将 .LoadMap() 调用放在 try-catch 块中。它抛出异常:

p_elSource.attachEvent 不是 功能

我已经尝试过 msdn 论坛推荐的以下解决方案:

  • 在调用 LoadMap() 之前设置 VEMapOptions.BirdseyeOrientation 的默认值
  • 确保 DOCTYPE 存在

只有在启用 firebug 时才会发生这种情况。

【问题讨论】:

  • 有没有人遇到过类似的问题.. 或者我是这里唯一面临这个问题的人??

标签: javascript jquery firebug bing-maps virtual-earth


【解决方案1】:

芝诺,

你用的是FF4吗?我在 FF4 中遇到了问题,这是由我的脚本调用尚未定义的 VE 函数的竞争条件引起的。我得到了解决方案here

请特别注意 Josh Unger 的回答,他描述了使用 setInterval 等待辅助库加载并执行此操作。

var interval = setInterval(function() {
    if (eval("typeof VEMap") != "undefined" &&
        document.getElementById("map").attachEvent != undefined)   
    {
        clearInterval(interval);
        LoadMap();
    }
}, 10);

您必须更新示例代码以适应您的情况。重要的部分是避免在 VE 中调用任何东西,直到您确定 VE 脚本已加载并且辅助库已加载。

最近使用 FF4 的人向我报告了这个问题。我怀疑 FF4 与 FF3 相比的某些东西(可能是更快的脚本执行,或者脚本执行时间的差异)触发了错误。无论如何,当我更新我的代码以延迟调用 VE 直到加载库时,错误消失并且地图正常工作。

请注意,我没有进行延迟加载,Firebug 不是问题。这些显然是 2008/2009 年线程活跃时的因素。

【讨论】:

  • 当我增加间隔时这对我有用;我用 1000 而不是 10。
  • if(eval("typeof VEMap") != "undefined") 需要什么? if(window.VEMap) 也不行吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-17
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多