Skyline桌面二次开发之路径漫游(C#)

所谓路径漫游:即创建一个动态对象和一条由多点组成的线,然后让动态对象沿着线飞行

首先绘制一条线,实际上路径漫游是不需要绘制线的,我这里只是为了确认动态对象是否沿着线路在飞行,代码如下:

//绘制路径
            double[] cVerticesArray = null;
            cVerticesArray = new double[] {
                        116.35,  27.98,  0,
                        116.45,  28.98,  0,
                        116.45,  28.11,  0,
                        116.65,  28.45,  0,
                     };

            ILineString pILineString = sgWorld.Creator.GeometryCreator.CreateLineStringGeometry(cVerticesArray);
            IColor66 color = sgWorld.Creator.CreateColor(255, 0, 0, 125);
            var polyline = sgWorld.Creator.CreatePolyline(pILineString, color);

  接下来创建动态对象,代码如下:

var dynamicObject = this.sgWorld.Creator.CreateDynamicObject(0, DynamicMotionStyle.MOTION_GROUND_VEHICLE, DynamicObjectType.DYNAMIC_IMAGE_LABEL, @"F:\项目管理\智慧抚州\使用的Fly\data11\汽车图标\整车.png", 50, AltitudeTypeCode.ATC_TERRAIN_RELATIVE, "", "动态对象");

  参数说明:

第一个参数0:一组 IRouteWaypoint66对象,后续向动态对象中添加

第二个参数DynamicMotionStyle:移动方式,是一个枚举类型,具体的效果大家可以去试一下

第三个参数DynamicObjectType:动态对象类型,是一个枚举类型,该参数也决定了你第四个参数的文件类型

第四个参数:由于第三个参数选择的Image_label,这里我选择了一张图片

第五个参数50:文件缩放大小

第六个参数AltitudeTypeCode:高度模式

动态对象创建完成之后就是创建路径的拐点,代码如下:

var wayPoint1 = this.sgWorld.Creator.CreateRouteWaypoint(116.35, 27.98, 0, 2000);
            var wayPoint2 = this.sgWorld.Creator.CreateRouteWaypoint(116.45, 28.98, 0, 2000);
            var wayPoint3 = this.sgWorld.Creator.CreateRouteWaypoint(116.55, 28.11, 0, 800);
            var wayPoint4 = this.sgWorld.Creator.CreateRouteWaypoint(116.65, 28.45, 0, 800);

  然后将拐点添加到动态对象中:

            dynamicObject.Waypoints.AddWaypoint(wayPoint1);
            dynamicObject.Waypoints.AddWaypoint(wayPoint2);
            dynamicObject.Waypoints.AddWaypoint(wayPoint3);
            dynamicObject.Waypoints.AddWaypoint(wayPoint4);
            dynamicObject.CircularRoute = false;
            dynamicObject.RestartRoute(0);

  最后调用飞行到对象,就可以实现路径漫游效果:

sgWorld.Navigate.FlyTo(dynamicObject.ID, ActionCode.AC_JUMP);

  

原文地址:https://www.cnblogs.com/huangwei1992/p/9487843.html

时间: 2024-10-05 15:48:58

Skyline桌面二次开发之路径漫游(C#)的相关文章

【0002(基础)】Skyline二次开发入门经典系列教程——目录

这段时间由于个人事务太多,以至于没有按照时间更新系列教程,本人将尽快补上所欠章节,在此说声抱歉!   这一章在我心目中占有很重要的地位,因为我想通过这一章的内容来确定整个系列的大致走向.然而在整理的过程中,发现现实远比想象要复杂得多:首先想尽可能介绍较多的知识点,其次又要考虑学习的简易程度,再次又要确定顺当的知识体系流程-- 由于暂时的考虑无论如何也是不可能完备的,因此为了不影响后面教程的编写,暂定把这一章作为一个[流动性质]的可变章节,在编写每一章时,动态根据实际情况修改(添加.移动.修改)系

[地图SkyLine二次开发]关于IE内存限制问题(1G)......(续)

二次开发Skyline时(B/S),经常会遇到,IE浏览器内存不够,导致崩溃的问题. 在上一个博文中写到,将IE-32bit浏览器内存限制扩展的解决办法. 上一个博文中做出来的iexplore.exe的基础上,将Skyline的安装包,以及适应浏览器版本的程序,打包成一个安装包. 在客户第一次登陆本系统时,让客户只需安装一次就OK. 一.准备工作: 1.下载.NetFrameWork4.5 2.将IE各个版本,按上一个博文中的方法,对应每一个版本,都做出来iexplore.exe 3.做适应IE

【0001(基础)】Skyline二次开发入门经典系列教程总览

本人是从2012年开始接触Skyline二次开发的,经历过 v6.0~v6.5(最新的6.6版本还未使用)的所有版本.作为一名非GIS专业毕业的大学本科生,鬼使神差般地进入了这个瑰丽的GIS领域.因此,在从事了4年多的Skyline二次开发工作后,我不能说我是"授业有专攻",更不能说我是"闻道有先后".在这个领域内,大牛之人比比皆是,正是因为他们的存在与指引,才使得我现在有点东西可以写出来供大家交流沟通.   整理这个系列教程的原因主要出于如下几点的考虑: 1.Sk

[地图SkyLine二次开发]框架(2)

上节讲到,地图加载. 但我们可以发现,当没有页面布局的情况下,<OBJECT>控件,没有占满整个屏幕,这里我们就要用到Extjs的功能了. 这节要讲的是用Extjs为<OBJECT>控件布局,让它适应任何版本的IE浏览器(因为SkyLine目前只支持IE). 1.将Extjs包引进项目. -这里需要注意,网上下载的Extjs5.0包里,包含有很多例子之类的,为了保证项目尽可能的干净,我们只去一小部分. 2.在项目中应用 -我们在上一节,将OBJECT空间直接写在Index.csht

[地图SkyLine二次开发]框架(3)

上节将显示我们地图的OBJECT控件,布了一下局,但地图没有进行加载. 这是因为我们要在另一个页面,对OBJECT控件进行地图加载,并且得到该控件的sgworld,以便对其进行我们想要的开发. 这里,细心的人会说,为什么要在另一个页面加载呢?为什么不在OBJECT所在页面进行加载呢? 这也是一个比较关键性的问题,原因很简单, 因为Object控件上,放置任何DIV,SPAN,或者其他控件时,都会被Object控件覆盖在下面. 在网上找了很多办法,最有效的,而且项目中常用到的就是IFRAME方法.

[地图SkyLine二次开发]框架(4)

继续上一节... 1.Extjs5.0版Menu. -将Extjs包引入MenuPage.html页. 2.前段用Extjs的MVC框架 -在根目录下创建app文件夹,文件夹下分别创建controller,model,store,view文件夹 -根目录下创建app.js文件 -view文件夹下创建MainLayout.js文件 -controller文件夹下创建MainController.js文件 3.菜单页面布局 -MainLayout.js代码 Ext.define('ZZH.view.

Skyline(6.x)-二次开发手册使用技巧

毕业设计选择Skyline的Web端二次开发,由于以前没有接触过ActiveX控件的使用,二次开发手册是英文的读起来有点吃力,并且IE直接控制台输出ActiveX控件创建的对象看不到内部的属性和方法,使得整个毕设快做完了才感觉弄明了Skyline二次开发的套路. 手册存放位置 默认安装是:C:\Program Files (x86)\Skyline\TerraExplorer Pro\Help\ProgrammersGuide.chm 查看ActiveX控件创建的对象看的属性和方法 使用Obje

Google Map和桌面组件 Android开发教程

本文节选于机械工业出版社推出的<Android应用开发揭秘>一 书,作者为杨丰盛.本书内容全面,详细讲解了Android框架.Android组件.用户界面开发.游戏开发.数据存储.多媒体开发和网络开发等基础知 识,而且还深入阐述了传感器.语音识别.桌面组件开发.Android游戏引擎设计.Android应用优化.OpenGL等高级知识.另外,本书还全面 介绍了如何利用原生的C/C++(NDK)和Python.Lua等脚本语言(Android Scripting Environment)来开发A

最好最实用的PHP二次开发教程

◆二次开发 1.什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核. 2.为什么要二次开发? 随着信息化技术的不断发展,IT行业涌现出了一系列优秀的开源作品,其作者或是个人,或是项目小组,或是软件公司.选择和 应用这些优秀的开源软件,并在此基础上进行符合业务需求的二次开发,将给企业节省信息化成本(时间成本及开发成本)的同时,更能带来技术上的保障.这就是 我们常听的:站在巨人的肩膀上,你将看的更远.所以国内