谷歌地球回调不会被解雇

时间:2012-08-24 17:55:08

标签: javascript javascript-events google-earth google-earth-plugin

我正在努力让谷歌地球回调起作用,但它们似乎并没有为我开火。我已经使用Google地球API网站上的View Change Example作为参考,并且看到它与我的代码之间没有区别......但是我的代码没有用!

以下是我的代码的重要部分:

<script type="text/javascript">
var ge;

google.load("earth", "1");

function init() {
  document.getElementById('map3d').innerHTML = '';
  google.earth.createInstance('map3d', initCallback, failureCallback);
}

function initCallback(pluginInstance) {
  ge = pluginInstance;
  ge.getWindow().setVisibility(true);

  // add a navigation control
  ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);

  // Set the FlyTo speed.
  ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);

  // add some layers
  //ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true);
  //ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true);

  throw (new Error("InitCallback!"));

  google.earth.addEventListener(ge.getView(), 'viewchange', function () {
      throw (new Error("EVENT!"));
  });

}

function failureCallback(errorCode) {
}
</script>

“InitCallback!”错误被正确抛出,但我从未看到“事件!”抛出的错误 - 无论我移动地球有多大。

有谁看到我做错了什么?非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

我不是javascript的专家,但如果你更换:

       throw (new Error("EVENT!"));

提醒,例如:

       alert('EVENT!');

我打赌你会发现它会起作用。即eventListener工作正常,它似乎不喜欢'throw'命令

答案 1 :(得分:1)

lifeIsGood是对的 - 当你在没有try catch块的情况下抛出上面的错误时,会导致抛出错误后的js不执行。

如果您只是尝试使用“快速肮脏的方式”在控制台中打印内容,请使用console.log('Error'); ...

function initCallback(pluginInstance) {
     ge = pluginInstance;
     ge.getWindow().setVisibility(true);

     //throw (new Error("InitCallback!")); -- change this to 
     console.log('InitCallback!');

     google.earth.addEventListener(ge.getView(), 'viewchange', function () {
         //throw (new Error("EVENT!")); -- change this to
         console.log('EVENT!');
     });

}