您的位置:首页 > 其它

Skyline软件二次开发初级——5如何在WEB页面中的三维地图上使用事件函数

2012-09-22 11:01 549 查看
1.onFrame事件 - 移动摄像机:

<html>
<head>
<title>onFrame - Move camera</title>
<object id="SGWorld" classid="CLSID:3a4f91b1-65a8-11d5-85c1-0001023952c1" style="visibility:hidden;height:0 "></object>
<script type="text/javascript">

var time = 5 * 1000; // move for 5 sec.

function Init()
{
SGWorld.AttachEvent("onFrame", onFrame);

SGWorld.Navigate.JumpTo(SGWorld.Creator.CreatePosition(-100.0, 40.0, 13000000, 3, 0, -85));
setTimeout(function () { SGWorld.DetachEvent("onFrame", onFrame); }, time);
}

function onFrame()
{

var pos = SGWorld.Navigate.GetPosition();

pos.X += 0.5;
pos.Y -= 0.2;

SGWorld.Navigate.SetPosition(pos);

}

</script>
</head>
<body onload="Init();">
</body>
</html>

2.onFrame事件 - 移动对象:

<html>
<head>
<title>onFrame - Move objects</title>
<object id="SGWorld" classid="CLSID:3a4f91b1-65a8-11d5-85c1-0001023952c1" style="visibility:hidden;height:0 "></object>
<script src="abspath.js" type="text/javascript"></script>
<script type="text/javascript">

var model = null;
var time;

function Init()
{
time = new Date();
SGWorld.AttachEvent("onFrame", onFrame);

var pos = SGWorld.Creator.CreatePosition(-122.38050, // x
37.62331, // y
40.0, // height
3, // height type
297.0, // yaw
15.0, // pitch
0, // roll
0 // dist
);

model = SGWorld.Creator.CreateModel(pos, toAbspath("data/747.xpc"), 0.2);

model.Attachment.AutoDetach = false;

SGWorld.Navigate.FlyTo(model);
}

function onFrame(elapsedTime)
{
// move object with speed of 400km/h
var distToMove = (400 * 1000 / 3600) * (new Date().getTime() - time.getTime()) / 1000;

model.Position = model.Position.Move(distToMove, model.Position.Yaw + 0.1, model.Position.Pitch);
time = new Date();
}

</script>
</head>
<body onload="Init();">
</body>
</html>

3.onLButtonDown事件:

<html>
<head>
<object id="SGWorld" classid="CLSID:3a4f91b1-65a8-11d5-85c1-0001023952c1" style="visibility:hidden;height:0 "></object>
<script type="text/javascript">

var globe = null;
var pos = null;
var popup, popup2;

function Init()
{

SGWorld.AttachEvent("onLButtonDown", onLButtonDown);
SGWorld.AttachEvent("onRButtonDown", onRButtonDown);
popup2 = SGWorld.Creator.CreatePopupMessage()
popup2.InnerText = "Left click on the terrain to get the coordinates at cursor position. Right click to finish.";
SGWorld.Window.ShowPopup(popup2);
}

function onLButtonDown(flags, x,y)
{
var ret = SGWorld.Window.PixelToWorld(x, y);

popup = SGWorld.Creator.CreatePopupMessage("onLButtonDown event", "", x, y);

popup.InnerText = (ret == null) ? "Screen coordinate hit the sky" : "Screen coordinates ("+x+","+y+"):\nTerrain coordinate:\nX: " + ret.Position.X + "\nY: " + ret.Position.Y;

SGWorld.Window.ShowPopup(popup);

return true; // event was processed by the client. return false to allow additional processing of the event.
}

function onRButtonDown(flags, x,y)
{

SGWorld.DetachEvent("onLButtonDown", onLButtonDown);
SGWorld.DetachEvent("onRButtonDown", onRButtonDown);

if(popup)
SGWorld.Window.RemovePopup(popup);
if(popup2)
SGWorld.Window.RemovePopup(popup2);

return true; // event was processed by the client. return false to allow additional processing of the event.
}

</script>
</head>
<body onload="Init();">
</body>
</html>

4.屏蔽右键弹出菜单:

<html>
<head>
<title>Preventing right popup</title>
<object id="SGWorld" classid="CLSID:3a4f91b1-65a8-11d5-85c1-0001023952c1" style="visibility:hidden;height:0 "></object>
<script type="text/javascript">

function Init()
{
SGWorld.AttachEvent("onRButtonDown", onRButtonDown);
SGWorld.AttachEvent("onRButtonDblClk", onRButtonDblClk);

SGWorld.Window.ShowMessageBarText("This sample shows how to disable the default right context menu. Double right-click to re-enable", 3);
}

function onRButtonDown(flags, x,y)
{

return true; // Tell TE that the OnRButtonDown event was processed by the client
}

function onRButtonDblClk(flags, x,y)
{
SGWorld.DetachEvent("onRButtonDown", onRButtonDown);
SGWorld.DetachEvent("onRButtonDblClk", onRButtonDblClk);
SGWorld.Window.HideMessageBarText();

alert("Right click is now enabled");

return false;
}

</script>
</head>
<body onload="Init();">
</body>
</html>

5.onTerraExplorerMessage事件:

<html>
<head>
<title>onTerraExplorerMessage event</title>
<object id="SGWorld" classid="CLSID:3a4f91b1-65a8-11d5-85c1-0001023952c1" style="visibility:hidden;height:0 "></object>
<script type="text/javascript">

function Init()
{
SGWorld.AttachEvent("onTerraExplorerMessage", onTerraExplorerMessage);

var label = SGWorld.Creator.CreateTextLabel(SGWorld.Creator.CreatePosition(-71.00425, 42.36081, 100),
"Click here to get the name of the airport",SGWorld.Creator.CreateLabelStyle());

var msg = SGWorld.Creator.CreateMessage(0, "Logan International",0);
label.Message.MessageID = msg.ID;

SGWorld.Navigate.JumpTo(label);
}

function onTerraExplorerMessage(messageId, senderNodeId)
{
var message = SGWorld.Creator.GetObject(messageId);
var senderNode = SGWorld.Creator.GetObject(senderNodeId);
senderNode.Text = message.Text;
}

</script>
</head>
<body onload="Init();">
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐