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

简介: 所谓路径漫游:即创建一个动态对象和一条由多点组成的线,然后让动态对象沿着线飞行首先绘制一条线,实际上路径漫游是不需要绘制线的,我这里只是为了确认动态对象是否沿着线路在飞行,代码如下://绘制路径 double[] cVerticesArray = null; ...

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

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

//绘制路径
            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);

  

 

目录
相关文章
|
2月前
|
安全 Android开发 智能硬件
智能家电下载并安装应用程序
智能家电下载并安装应用程序
25 1
|
8月前
|
智能硬件
搭建Home Assistant智能家居系统 - 随时随地控制你的家庭设备「内网穿透」(三)
搭建Home Assistant智能家居系统 - 随时随地控制你的家庭设备「内网穿透」
247 0
|
4月前
|
XML 数据可视化 定位技术
OpenStreetMap网页界面介绍与OSM数据多种下载渠道及方式对比
OpenStreetMap网页界面介绍与OSM数据多种下载渠道及方式对比
|
8月前
|
Linux 智能硬件
搭建Home Assistant智能家居系统 - 随时随地控制你的家庭设备「内网穿透」(一)
搭建Home Assistant智能家居系统 - 随时随地控制你的家庭设备「内网穿透」
417 0
|
8月前
|
安全 智能硬件
搭建Home Assistant智能家居系统 - 随时随地控制你的家庭设备「内网穿透」(四)
搭建Home Assistant智能家居系统 - 随时随地控制你的家庭设备「内网穿透」
282 0
|
8月前
|
Linux 数据安全/隐私保护 iOS开发
搭建Home Assistant智能家居系统 - 随时随地控制你的家庭设备「内网穿透」(二)
搭建Home Assistant智能家居系统 - 随时随地控制你的家庭设备「内网穿透」
626 0
|
Linux Android开发 iOS开发
AirServer是什么软件?有哪些功能优势
苹果手机投屏到电脑mac是怎么弄?你知道多少?相信大家对苹果手机投屏到电脑mac能在电脑上操作不是很了解,下面就让coco玛奇朵带大家一起了解一下教程。AIrServer是一款ios投屏到mac的专用软件,可将iOS上的音频,视频,照片,幻灯片和镜像接收通过AIrPlay投射到Mac。
283 0
|
Web App开发 编解码 安全
AirServer软件2023投屏工具有哪些的优势?
什么是 AirServer?AirServer 是适用于 Mac 和 PC 的先进的屏幕镜像接收器。 它允许您接收 AirPlay 和 Google Cast 流,类似于 Apple TV 或 Chromecast 设备。AirServer 可以将一个简单的大屏幕或投影仪变成一个通用的屏幕镜像接收器 ,是一款十分强大的投屏软件。
166 0
|
Web App开发 JavaScript 前端开发
Win + R 便捷打开常用网站
根据上一篇 Win + R 打开常用软件及文件夹 可以让电脑桌面非常简洁、干净,便捷指令快速开启应用程序、常用文件夹。这篇就介绍 `Win + R` 便捷打开常用网站。
|
Android开发 Windows
好工具推荐系列:幕享---全平台全设备投屏共享
好工具推荐系列:幕享---全平台全设备投屏共享
255 0