gpt4 book ai didi

javascript - 通过 COM 从 MATLAB 向 Google Earth 插件提供数据

转载 作者:数据小太阳 更新时间:2023-10-29 04:50:06 24 4
gpt4 key购买 nike

我目前正在使用 MATLAB/Simulink 和 Google Earth 进行飞行模拟项目。我想做的是让 MATLAB/Simulink 进行所有计算和模拟,并让 Google Earth 实时显示结果。

为了连接这两个程序,我使用 COM 接口(interface),而 MATLAB/Simulink 作为 COM 客户端,Internet Explorer 作为 COM 服务器。在此之前,我一直在使用 Google Earth COM API 而不是 Google Earth API(javascript 之一)。但是,某些功能在 COM API 中不可用或受限(例如:俯仰、滚动)。

因此,我求助于 Google 地球插件。这是示例,Web 应用程序应该是什么样子。

http://www.hs-augsburg.de/~bizz145/earth/fps/index3.html

使用 DOM,我可以写入网页。但我的问题是,如何刷新我在输入区域所做的更改。是否可以通过 COM 触发事件(在我的例子中是 onClick 或 onBlur)?除了使用 Form 元素将数据提供给 Google 地球之外,还有什么更好的解决方案吗?

最佳答案

是的,可以通过 COM 调度“触发”事件,但您不需要这样做。如果您在 matlab 中托管 html 文档,只需使用 execScript() 来调用您需要的方法...例如

% Open Plugin
h = actxcontrol('Shell.Explorer', [0 0 800 600]);
invoke(h,'Navigate2','host.html');

// trigger the behavior, rather than dispatching an event...
// arguments are: latitude, longitude, altitude, altitudeMode, heading, tilt, roll
h.Document.parentWindow.execScript(['UpdateCamera(34, 23, 10, 0, 90, 0, 0)'], 'JavaScript');

UpdateCamera 将是“host.html”中的 COM 可见方法 - 类似于...

var UpdateCamera = function() {
var a = arguments; // the values from matlab
var c = ge.getView().copyAsCamera(ge.ALTITUDE_ABSOLUTE);
var oldspeed = ge.getOptions().getFlyToSpeed();

ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);

// KmlCamera.set
// see http://code.google.com/apis/earth/documentation/reference/interface_kml_camera.html#a716205eab6f634b558fcde6be9c58b50
c.set(a[0], a[1], a[2], a[3], a[4], a[5], a[6]);
ge.getView().setAbstractView(c);

ge.getOptions().setFlyToSpeed(oldspeed);
}

关于“之字形运动”的评论 - 问题在于 Google 地球插件中动画的飞速。要解决这个问题,只需将以下几行添加到您的主机 html 中即可。

function initCB(instance) {
ge = instance;

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

...
}

此外,为了进一步平滑动画,最好通过 api 的 frameend 事件触发动画。请参阅:http://earth-api-samples.googlecode.com/svn/trunk/examples/event-frameend.html

关于javascript - 通过 COM 从 MATLAB 向 Google Earth 插件提供数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6038027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com