2011-04-06 17 views
9

Tengo un gran problema con Bing Maps. Estoy usando: http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3Problema con Bing Map --p_elSource.attachEvent no es una función

En primer lugar estoy consiguiendo error en Firebug como:

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") 

Después de que puse la .LoadMap() llama dentro de try-catch bloque. que estaba lanzando una excepción:

p_elSource.attachEvent no es una función

ya probé siguientes soluciones que atraparán fueron recomendados en los foros de MSDN:

  • Valor de ajuste DEFAULT para VEMapOptions. BirdseyeOrientation antes de llamar a LoadMap()
  • Aseguró que DOCTYPE está allí

Esto ocurre solo cuando firebug está habilitado.

+0

¿Alguien más ha tenido problemas similares ... o soy el único que enfrenta este problema? – ZeNo

Respuesta

10

Zeno,

¿Está utilizando FF4? Tuve el problema en FF4, y fue causado por una condición de carrera en la que mi script llamaba a funciones VE que aún no se habían definido. Tengo una solución here.

En particular, tenga en cuenta la respuesta de Josh Unger, donde describe el uso de setInterval para esperar que una biblioteca auxiliar cargue y lo haga.

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

Deberá actualizar el código de muestra para adaptarlo a sus circunstancias. La parte importante es evitar llamar a cualquier cosa en VE hasta que esté seguro de que el script VE ha cargado y que la biblioteca auxiliar ha cargado.

Las personas que usan FF4 me informaron el problema recientemente. Sospecho que algo sobre FF4 en comparación con FF3 (tal vez una ejecución de guiones más rápida, o una diferencia en cuándo se ejecutan las secuencias de comandos) ha desencadenado el error. En cualquier caso, cuando actualicé mi código para retrasar la llamada a VE hasta que se cargaron las librerías, el error desapareció y los mapas funcionaron correctamente.

Tenga en cuenta que no estoy haciendo cargas flojas, y Firebug no es el problema. Esos fueron evidentemente factores cuando el hilo estuvo activo en 2008/2009.

+0

Lo intenté johnny pero eso no ayudó mucho. – ZeNo

+0

Esto funcionó para mí cuando aumenté el intervalo; Usé 1000 en lugar de 10. – Cosmin

+0

¿Cuál es la necesidad de 'if (eval (" typeof VEMap ")! =" Undefined ")'? ¿No funcionaría 'if (window.VEMap)' también? – Kreegr