通过Internet Explorer COM在谷歌地球插件中直接相机移动

时间:2011-07-08 09:20:15

标签: matlab com activex google-earth google-earth-plugin

我在Google地球插件中模仿直线有问题。为了模仿直线,我通过COM从MATLAB调用HTML文档中的JavaScript方法。 (MATLAB作为COM-客户端,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以内!)

不幸的是,我仍然无法在谷歌地球上直接运动。前进运动包括之字形运动。你可以在http://www.youtube.com/watch?v=KS77qORjFh8

看到结果

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

期待您的投入。

此致 万

1 个答案:

答案 0 :(得分:1)

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