我正在努力让谷歌地球回调起作用,但它们似乎并没有为我开火。我已经使用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!”错误被正确抛出,但我从未看到“事件!”抛出的错误 - 无论我移动地球有多大。
有谁看到我做错了什么?非常感谢任何帮助!
答案 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!');
});
}