Проблема с Bing Map --p_elSource.attachEvent не является функцией - PullRequest
9 голосов
/ 06 апреля 2011

У меня серьезная проблема с Bing Maps. Я использую : http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3

Сначала я получаю сообщение об ошибке в firebug:

 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:

  • Установка значения по умолчанию для VEMapOptions.BirdseyeOrientation перед вызовом LoadMap ()
  • Гарантировал, что DOCTYPE там есть

Это происходит, только если включен firebug.

1 Ответ

10 голосов
/ 13 апреля 2011

Zeno,

Используете ли вы FF4?У меня была проблема в FF4, и она была вызвана состоянием гонки, когда мой скрипт вызывал функции VE, которые еще не были определены.Я получил решение здесь .

В частности, обратите внимание на ответ Джоша Унгера, в котором он описывает использование 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 годах.

...