0

我在 Google 地球插件中模仿直线时遇到问题。为了模仿直线,我通过 COM 从 MATLAB 调用 HTML 文档中的 JavaScript 方法。(MATLAB 作为 COM-Client 和 Internet Explorer 作为 COM-Server)

JavaScript 代码如下:

function UpdateCamera(lat,lon,alt,bearing,pitch,roll) {
  var camera = ge.getView().copyAsCamera(ge.ALTITUDE_ABSOLUTE);

  // set the camera values         
  camera.setLatitude(lat);
  camera.setLongitude(lon);
  camera.setAltitude(alt);
  camera.setHeading(bearing);
  camera.setTilt(pitch);
  camera.setRoll(roll);

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

  // Update the view in Google Earth  
  ge.getView().setAbstractView(camera);
}

为了调用 JavaScript 方法,我在 MATLAB 中使用它:

for i=1:iend
    h.Document.parentWindow.execScript(['tickAnimation(' num2str(cood(i,1)) ',' ...
                                                    num2str(cood(i,2)) ',' ... 
                                                    num2str(cood(i,3)) ',' ...
                                                    num2str(70) ',' ...
                                                    num2str(90) ',' ...
                                                    num2str(0) ');'] , 'JavaScript');

pause(0.01)

end

我从远处得到纬度和经度,这是模拟的输出。使用这里的公式http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html (这个公式在0.5mm以内是准确的!)

不幸的是,我仍然无法在 Google 地球中直线移动。向前运动包括之字形运动。你可以在这里看到结果http://www.youtube.com/watch?v=KS77qORjFh8

向上的运动已经很顺畅了。现在的问题只是向前运动。

期待您的投入。

问候,万

4

1 回答 1

1

在移动过程中,不仅相机的纬度/经度会发生变化,而且航向也会发生变化。因此,您还需要更新标题。

于 2011-07-08T09:48:14.977 回答