Google Maps API开发

来源:百度文库 编辑:神马文学网 时间:2024/04/27 22:31:54

2.视场相机设置

当用户观察Google Earth地图的时候,是没办法仅仅通过移动头部来获得不同观察体验的。因为虽然我们看到的Google地球是个三维球体,但是地图窗口投射到屏幕上的影像是一个不折不扣的平面,三维效果是通过计算模拟出来的。

要想看到不同方位的图像,例如看到地球的另一面,就必须用鼠标去拖曳,并且进行缩放,缩放到某个地方,而此时用户无须转动头部和眼球。这是操纵视场照相机(ViewCamera)的结果。

"视场照相机"的详细介绍,请参见ICameraInfo接口。

IApplicationGE接口提供了一个获得"视场照相机"的对象的方法GetCamera。

1)GetCamera

GetCamera为取得当前视场的照相机。并不存在一个真实的照相机,只不过是通过当前视场的内容和观察角度的反向推算,认为想像一个虚拟的照相机存在于视场之中。对于ICameraInfoGE接口的详细描述,见下面的方程式:

function GetCamera(considerTerrain: Integer): ICameraInfoGE; safecall;

其参数如表5-1所示。

表5-1  GetCamera参数

参  数

输入方向

值类型

定  义

considerTerrain

In

(Bool)

是否按照地形起

伏而确定照相机焦点


参数considerTerrain有两个选择,当选择true(非零)时,则根据地形的起伏计算照相机焦点的位置;当选false(零)时,则表示根据地球曲率计算。后一种不是很准确。

这个参数在照相机行进过程中起着重要的作用,特别是在山地多起伏的地区,照相机的焦点需要根据需要设置。

Delphi实例代码如下:

  1. GeFlag: boolean;  
  2. ……  
  3. function TGETest.Testfun: Double;  
  4. var  
  5.   cm: ICameraInfoGE;  
  6. begin  
  7.   result := 0;  
  8.   if GeFlag then begin  
  9. cm := F_AppGE.GetCamera(1); //在Delphi中
    为整数型数值,非零表示true  
  10. ……  
  11.     if cm <> nil then  
  12.       result := cm.Azimuth;  
  13.   end;  
  14. end;  
  15. …… 

C#实例代码:

  1. ApplicationGEClass appGE = new ApplicationGEClass();  
  2. ……  
  3. private CameraInfoGE getCam()  
  4. {  
  5.     CameraInfoGE cm = new CameraInfoGEClass();  
  6.     cm = appGE.GetCamera(1);  
  7.     return cm;  

这个实例代码表示获取当前视场照相机对象,然后返回照相机的方位角。视场照相机除了这个属性参数外还有其他的如移动速度、倾角、焦点经纬度等参数。

2)SetCamera

IApplicationGE还提供了设置视场照相机的方法SetCamera,使用这个方法,开发人员可以通过程序动态改变观察的方位和角度。

SetCamera为设置照相机的焦点位置和移动速度,移动的效果如同用户坐在飞行中的飞机从舷窗向外看一样。

其方程式如下:

  1. procedure SetCamera(const camera: ICameraInfoGE;
    speed: Double); safecall; 

其参数如表5-2所示。

表5-2  SetCamera参数

参  数

输 入 方 向

值 类 型

定  义

Camera

In

ICameraInfoGE

照相机对象

Speed

In

Double

移动的速度

【责任编辑:云霞 TEL:(010)68476606】
回书目   上一节   下一节 上一篇: 5.3.1 IApplicationGE接口(1) 下一篇: 5.3.1 IApplicationGE接口(3)