0

我正在尝试让 Google 地球回调工作,但他们似乎并没有为我开火。我使用了Google Earth 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>

“初始化回调!” 错误被正确抛出,但我从来没有看到“事件!” 抛出错误——无论我如何移动地球。

有谁看到我做错了什么?任何帮助是极大的赞赏!

4

2 回答 2

2

我不是 javascript 方面的专家,但如果你替换:

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

用警报代替,例如:

       alert('EVENT!');

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

于 2012-08-24T18:16:19.680 回答
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!');
     });

}
于 2012-08-28T14:13:46.200 回答