zoukankan      html  css  js  c++  java
  • 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:项目管理智慧抚州使用的Flydata11汽车图标整车.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);
    

      

     

  • 相关阅读:
    【Java并发】并发笔记(一)
    【深入Java基础】排序算法(一)
    QDU-GZS and String
    牛客网36-A,B题解
    QDU-GZS与素数大法(素数筛法)
    csdn自动展开+去广告+净化剪切板+免登陆(如有侵权,立即删博)
    QDU第一届程序设计大赛——E到I题解法(非官方题解)
    Codeforces Round #529 -C- Powers Of Two(二进制拆分)
    CodeForces
    分配物资(模拟)
  • 原文地址:https://www.cnblogs.com/huangwei1992/p/9487843.html
Copyright © 2011-2022 走看看