具体实现如下:
1 定义对象
2 初始化对象
3 加载Activex
4 浏览网页
代码如下:
html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>网页标题</title>
<style type="text/css">
<!--
td {
font-family: "宋体";
font-size: 12px;
}
-->
</style>
</head>
<body onLoad="Init();">
<!--定义TerraExplorer的信息窗口对象-->
<object ID="TEInformationWindow" classid="CLSID:3a4f9193-65a8-11d5-85c1-0001023952c1" width="300" height="400">
</object>
<!--定义一个TerraExplorer 3D窗口对象-->
<object ID="TE3DWindow" classid="CLSID:3a4f9192-65a8-11d5-85c1-0001023952c1" width=650 height="400">
</object>
<!--定义TerraExplorer对象-->
<object ID="TE" CLASSId="CLSID:3a4f9191-65a8-11d5-85c1-0001023952c1">
</object>
</html>
<script language="javascript">
var ITerraExplorer = null;
var IPlane = null;
var IMenu = null;
var IObjectManager = null;
//---------------------------------------------------------------
function Init()
{
var temp;
ITerraExplorer = TE.interface("ITerraExplorer5");
ITerraExplorer.load("D:\\Job\\test.fly");
temp = ITerraExplorer.Type;
alert(temp);
}
IPlane5
IPlane5接口是对飞行方式、观看位置进行控制,能操作浏览对象的观察角度,方向、速度、放大,偏航,斜度,旋转 …..,来产生复杂的移动。
属性:
Speed:速度以米/秒为单位,在3dwindow上运行,根据设置的大小决定对象运行的快慢;
FieldOfView:观看3dwindow的区域,在观看的程度上,对于球体,它的角度设置的范围在1-180度中间,1为放到最大程度,180为放到最小程度,对偏航的设置,此值必须设置为5 -90度之间,默认的是53度。
方法:
FlyTo:此方法是飞行的动作,根据得到x坐标,z坐标,,视景的高度设定,设置不同运动方式(偏航(Yaw),斜度(Pitch),运动的方式)的设置,飞到并定位到目的地,还可以对目的地进行距离的设置。
[in] double X,
地形上的x坐标的位置
[in] double Z,
地形上的z坐标的位置
[in] double Height,
飞行对象与地形的高度
[in] double Distance,
距离的远进,就像摄像机拉镜头一样。
[in] double Yaw,
偏航的设定,对飞行对象偏航的角度进行控制。
[in] double Pitch,
对斜度进行控制
[in] BSTR Pattern)运动的模式
对飞行动作模式进行控制
共有7个参数
1、 FlyToLocation
2、 JumpToLocation
3、 FlyToTerrain
4、 Circle(圆)
5、 Oval(椭圆)
6、 Line(线形)
7、 Arc(圆弧)
代码:
SetPosition
设定当前3dwindow的视角的位置,不同于MovePosition,此方法直接“jump“到某个位置。
用户可以从一个城市直接跳到另一个城市
[in] double X,
X坐标
[in] double Y,
Y坐标
[in] double Height,
高度
[in] double Yaw,
偏航
[in] double Pitch,
斜度
[in] double Roll,
滚动
[in] double CameraDeltaYaw,
视角的偏航,与飞行到某个对象的偏航相同
[in] double CameraDeltaPitch,
视角的斜度。。。。。。
[in, defaultvalue(0)] long Flags)
Flag共有13个参数,默认为0,每个参数都对应上面一个参数,使某个参数无效。
MovePosition
与setPosition相同。
GetPosition
这个方法重新得到setPosition的参数,来定义3dwindow的位置和方向
[out] VARIANT* doubleX,
[out] VARIANT* doubleY,
[out] VARIANT* doubleHeight,
[out] VARIANT* doubleYaw,
[out] VARIANT* doublePitch,
[out] VARIANT* doubleRoll,
[out] VARIANT* doubleCameraDeltaYaw,
[out] VARIANT* doubleCameraDeltaPitch)
应用:自定义坐标转换 IPlane.GetPosition CurrX, CurrY, CurrH, CurrDirection, CurrPitch , CurrRoll, CurrDeltaYaw, CurrDeltaPitch
FlyToObject
飞到具体的某个地形上的对象
[in] BSTR ObjectID,
Dim ItemID = IInformationTree.FindItem("浏览路径\2006北京国际马拉松赛")
\'msgbox ItemI
if ItemID <> 0 then
ObjID = IInformationTree.GetTerraObjectID(ItemID)
IPlane.FlyToObject ObjID, 18
els
alert "Item not found: "&ItemName
End If
[in] ActionCode Code)
动作代码:
o AC_FLYTO = 0 //飞行到对象
o AC_CIRCLEPATTERN = 1 //圆形
o AC_OVALPATTERN = 2//椭圆
o AC_LINEPATTERN = 3 //线形
o AC_ARCPATTERN = 4 //弧形
o AC_FOLLOWBEHIND = 5 //后边
o AC_FOLLOWABOVE = 6 //上方
o AC_FOLLOWBELOW = 7下方
o AC_FOLLOWRIGHT = 8 //右边
o AC_FOLLOWLEFT = 9 //左边
o AC_FOLLOWBEHINDANDABOVE = 10 //后上方
o AC_FOLLOWCOCKPIT = 11 //坐在机舱
o AC_JUMP = 14 //跳转
o AC_PLAY = 18 //跳转并播放
SetSpeed
([in] double Speed)
此方法设置视角的速度,以此设置的速度靠近某个对象
GetSpeed
[out, retval] double* Speed)
获得以速度的值
Zoom
此方法执行飞行到某个对象的时候进行放大
[in] double Distance,
在某个距离段执行的操作
GetPositionEx
重新获得setPosition的参数,定义视角的位置和方向,此方法多了一个
Flag,可以重新找到海拔高度的方法到地形数据上。
用于像地面剖析等。