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实例代码如下:
- GeFlag: boolean;
- ……
- function TGETest.Testfun: Double;
- var
- cm: ICameraInfoGE;
- begin
- result := 0;
- if GeFlag then begin
- cm := F_AppGE.GetCamera(1); //在Delphi中
为整数型数值,非零表示true- ……
- if cm <> nil then
- result := cm.Azimuth;
- end;
- end;
- ……
C#实例代码:
- ApplicationGEClass appGE = new ApplicationGEClass();
- ……
- private CameraInfoGE getCam()
- {
- CameraInfoGE cm = new CameraInfoGEClass();
- cm = appGE.GetCamera(1);
- return cm;
- }
这个实例代码表示获取当前视场照相机对象,然后返回照相机的方位角。视场照相机除了这个属性参数外还有其他的如移动速度、倾角、焦点经纬度等参数。
2)SetCamera
IApplicationGE还提供了设置视场照相机的方法SetCamera,使用这个方法,开发人员可以通过程序动态改变观察的方位和角度。
SetCamera为设置照相机的焦点位置和移动速度,移动的效果如同用户坐在飞行中的飞机从舷窗向外看一样。
其方程式如下:
- procedure SetCamera(const camera: ICameraInfoGE;
speed: Double); safecall;
其参数如表5-2所示。
表5-2 SetCamera参数
参 数
输 入 方 向
值 类 型
定 义
Camera
In
ICameraInfoGE
照相机对象
Speed
In
Double
移动的速度
回书目 上一节 下一节 上一篇: 5.3.1 IApplicationGE接口(1) 下一篇: 5.3.1 IApplicationGE接口(3)