热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

1.onFrame事件-移动摄像机:onFrame-Movecamera

1.onFrame事件 - 移动摄像机:

 

<html>
    <head>
        <title>onFrame - Move cameratitle>
        <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.040.01300000030-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 objectstitle>
        <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 popuptitle>
        <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 eventtitle>
        <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.0042542.36081100), 
                                                      
"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>

 


转载于:https://www.cnblogs.com/yitianhe/archive/2012/09/22/2697857.html


推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文介绍了lintcode(12)题目的要求和解题思路,以及给出了相应的代码实现。题目要求在给定的字符串source中找到包括所有目标字符串字母的最短子串,并且时间复杂度为O(n)。解题思路是使用滑动窗口的方法,通过维护一个unordered_map来记录目标字符串中每个字符的出现次数,并使用双指针来寻找最小子串。代码实现部分给出了具体的实现代码。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
author-avatar
wjw0000
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有