三维电子沙盘数字沙盘虚拟现实无人机倾斜摄影三维全景建模卫星图片矢量

该数据库中只提供 成都市火车南站附近的数据请注意,104.0648,30.61658

 在SDK中为了方便三方数据的接入,引入了一个用户层接口。主要是完成三方数据的接入,含动态数据(如GPS),用户可自行控制UI及UI的交互,可实现如滴滴打车的车辆控制,公安应用中的UI按属性控制显示,并且该用户层的显示是由核心部分直接调用,在需要显示数据的调用下面的接口,这样可防止因为用户是从外部接入。而卡顿,影响用户使用体验。而UI的回收是由核心负责,不需要用户干预,二次开发时用户只用关心自己要承现的UI,及UI的交互:

public interface UserGisData : INotifyPropertyChanged
    {
 
 
        NewGisBiao.Base.JunBiao.CenteType BiaoCenterType
        {
            get;  //这个UI对象的中心点类型
        }
 
        string LayName {
            get; //用户层名称
         
        }
 
     
 
 
        /// <summary>
        /// 标签整体缩放
        /// </summary>
        double  MScal
        {
            get; //UI整体缩放参数
        }
 
 
        Dictionary <string, GisLib.DrawPointData> DrawObject
       {
           get;  //访问当前已经存在UI对象
           set;
       }
 
        /// <summary>
        /// 是否显示
        /// </summary>
       bool ISShow
       {
           get;  //隐藏和显示该用户层
           set;
       }
 
        /// <summary>
        /// 最小显示层
        /// </summary>
       int MinZoom
       {
           get;  //该用户层的最小显示层
           set;
       }
 
        /// <summary>
        /// 最大显示层
        /// </summary>
       int MaxZoom
       {
           get; //该用户层的最大显示层
           set;
       }
 
 
 
 
        /// <summary>
        /// 返回一个图标表示这个层的图标
        /// </summary>
        System.Windows.Media.Imaging.BitmapImage MICon
        {
            get;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="centerx">查询中心点经度(如果没有会传入null) </param>
        /// <param name="centery">查询中心点纬度(如果没有会传入null)</param>
        /// <param name="info">查询的信息(如果是全部会传入*)</param>
        /// <param name="length">范围(如果没有会传入null)</param>
        /// <returns></returns>
        Dictionary<SechData, Point> SechPro(double centerx, double centery, string info, double length);
 
        Dictionary<SechData, Point> SechForLine(List<Point> Line, string info, double length);
        Dictionary<SechData, Point> SechForRect(List<Point> Line, string info, double length);
 
        /// <summary>
        /// 画用户物体
        /// </summary>
        /// <param name="centerx"></param>
        /// <param name="centery"></param>
        /// <returns></returns>
        List<DrawPointData> DrawData(double centerx, double centery);
 
 
        void OnUserBiaoClick(DrawPointData va); //UI点击的事件,现已作废,UI可自行响应所有交互事件
 
 
 
    }

List<DrawPointData> DrawData(double centerx, double centery); 为该接口的核心部分,传入参数为当前地图的中心 点经纬度,根据这个经纬度,二次开发用户需要从 数据(如mysql或者其它三方数据中)查询当前需要显示范围的 数据,并连通UI一起返回:例子如下:

List<DrawPointData> UserGisData.DrawData(double centerx, double centery)
        {
 
            if (Con == null)
            {
                Con = new MySql.Data.MySqlClient.MySqlConnection(IniRead.IniReadWrite.GetMySqlDataConnstring());
                Con.Open();
            }
 
            int mmzoom = IniRead.IniReadWrite.MPareant.Zoom;
            int drawfanwei = 5;
            double bx, by, ex, ey;
            Int64 cx, cy;
            NewGisBiao.Help.MathHelp.MyConver(centerx, centery, out cx, out cy, (int)mmzoom - 1);
            NewGisBiao.Help.MathHelp.MyConver2(cx - drawfanwei, cy - drawfanwei, (int)mmzoom - 1, out bx, out by);
            NewGisBiao.Help.MathHelp.MyConver2(cx + drawfanwei, cy + drawfanwei, (int)mmzoom - 1, out ex, out ey);
            string t6 = " where (jingdu > " + bx.ToString() + " and jingdu<"
                               + ex.ToString() + " and weidu > "
                               + ey.ToString() + " and weidu < "
                               + by + ")";
            MySqlCommand cmd = Con.CreateCommand();
            cmd.CommandText = "select * from gw_shigu" + t6;
            MySqlDataReader read = cmd.ExecuteReader();
 
            try
            {
 
 
                if (read.HasRows)
                {
                    List<DrawPointData> y1 = new List<DrawPointData>();
                    while (read.Read())
                    {
                        if (MData.ContainsKey(read["number"].ToString() + "A") == false)
                        {
 
                            DrawPointData u1 = new DrawPointData();
 
                            u1.ISAutoAngle = true;
                            u1.ISAutoScal = true;
                            u1.MaxZoomScal = 15;
 
 
                            u1.ID = read["number"].ToString() + "A";
                            u1.MPoint = new Point(Convert.ToDouble(read["jingdu"].ToString()), Convert.ToDouble(read["weidu"].ToString()));
                            Image h1 = new Image();
                            u1.Hi = 0.05;
                            h1.Width = 45;
                            h1.Height = 70;
                            if (read["sgtype"].ToString().Trim() == "重伤")
                                h1.Source = new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory + "\\res\\重伤.png"));
                            if (read["sgtype"].ToString().Trim() == "轻伤")
                                h1.Source = new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory + "\\res\\轻伤.png"));
                            if (read["sgtype"].ToString().Trim() == "无伤")
                            {
                                BitmapImage u11 = new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory + "\\res\\无伤.png"));
                                h1.Source = u11;
                                h1.Width = u11.Width;
                                h1.Height = u11.Height;
                            }
                            h1.Stretch = Stretch.Fill;
 
 
                            h1.Tag = read["number"].ToString() + ";" + u1.MPoint.X.ToString() + ";" + u1.MPoint.Y.ToString();
                            u1.UIObject = h1;
                            y1.Add(u1);
                        }
                    }
                    read.Close();
                  
                    return y1;
                }
                read.Close();
                return null;
            }
            catch
            {
                read.Close();
                return null;
            }
 
 
 
 
        }
上面的方法主要是从接口返回的中心点得到一 个范围内的用户数据,并根据用户的属性创建不同的UI,

这是根据车辆性制不同显示的不同车辆图标,也可以像下面这样,显示一些统计数据:

可以充分发挥WPF在UI上的优势,做出漂亮的标签

当UI显示完成后还可以通过调用:

/// <summary>
        /// 更新用户层里的UI对象
        /// </summary>
        /// <param name="Layes">用户层名称</param>
        /// <param name="ID">用户层ID</param>
        /// <param name="NewPoint">新的经纬度</param>
        /// <param name="Angle">新的角度</param>
        /// <param name="NewUI">新的UI</param>
        /// <param name="Ami">是否动画</param>
        /// <returns></returns>
        public bool UpdateUserObject(string Layes, string ID, Point NewPoint, double Angle, FrameworkElement NewUI, bool Ami = true)

接口对已经有的UI进行更新,可实现如滴滴打车一样的车辆动态效果,该接口只对已经承现的UI有用。

http://www.chinamtouch.com QQ:40140203  微信公众号:m3dgis2001
————————————————
版权声明:本文为CSDN博主「种瓜的」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xtgmd168/article/details/85686408

三维电子沙盘数字沙盘虚拟现实无人机倾斜摄影三维全景建模卫星图片矢量相关推荐

  1. 电子沙盘数字沙盘M3D GIS虚拟三维大数据人工智能无人机倾斜摄影三维全景建模课程第47课

    电子沙盘数字沙盘M3D GIS虚拟三维大数据人工智能无人机倾斜摄影三维全景建模课程第47课 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest ...

  2. 元宇宙大数据人工智能三维电子沙盘数字沙盘元宇宙大数据人工智能无人机倾斜摄影三维全景建模第18课

    元宇宙大数据人工智能三维电子沙盘数字沙盘元宇宙大数据人工智能无人机倾斜摄影三维全景建模第18课 上一节我们实现了模型的移动控制.这次我们来实现模型的材质控制,首先我们找一个模型.在3dmax中如下: ...

  3. 三维电子沙盘数字沙盘元宇宙大数据人工智能无人机倾斜摄影三维全景建模第17课

    三维电子沙盘数字沙盘元宇宙大数据人工智能无人机倾斜摄影三维全景建模第17课 在SDK中提供底层的模型访问接口,利用好了可以实现模型的移动动画.材质替换动画等等.下面介绍一下具体的操作方法: 这部 分需 ...

  4. 三维电子沙盘数字沙盘开发教程第3课

    三维电子沙盘数字沙盘开发教程第3课 下面介绍矢量图层的控制显示:上代码 foreach(string key in gis3d.SetFile.Biao.Keys)// gis3d.SetFile.B ...

  5. M3DGIS全息裸眼三维电子沙盘数字沙盘大数据系统开发教程视频第6课

    M3DGIS全息裸眼三维电子沙盘数字沙盘大数据系统开发教程视频第6课 三维电子沙盘数字沙盘开发教程第6课 gis3d.MapGo(103, 30, 19); //第一次跳转会有点慢,主要是获取数据,如 ...

  6. M3DGIS三维电子沙盘数字沙盘可视化交互地理信息系统开发教程第4课

    M3DGIS三维电子沙盘数字沙盘可视化交互地理信息系统开发教程第4课 虚拟三维数字沙盘开发教程第4课 下面介绍怎样在地球上增加自己的FrameworkElement,因为FrameworkElemen ...

  7. 三维电子沙盘数字沙盘开发教程第7课

    三维电子沙盘数字沙盘大数据人工智能开发教程第7课 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest Password=chinamtouch. ...

  8. 电子沙盘数字沙盘虚拟现实可视化系统开发教程第4课

    电子沙盘数字沙盘虚拟现实可视化系统开发教程第4课下面介绍怎样在地球上增加自己的FrameworkElement,因为FrameworkElement为WPF的基础UI对象,基本上所有的UI对象都是继承 ...

  9. 公安三维电子沙盘 数字沙盘方案书

    公安三维电子沙盘方案书 根据公安业务管理需求,以"指挥扁平化.管理精细化.勤务可视化.情指一体化.服务民本化"为设计思想,整合和利用三台合一.有无线通信.短信平台.视频监控.治安卡 ...

  10. 三维电子沙盘 数字沙盘GIS开发教程

    在SDK中提供了一套动画系统(和FLASH的动画系统相同),新的游戏模式(像打红警一样)还在开发中,敬请期待,下面简单介绍一下动画系统,整个动画系统只需要调用 https://blog.csdn.ne ...

最新文章

  1. android4.0 编译报错 Xmx2048m错误 .
  2. RHEL6.5/Centos6.5 搭建bugzilla
  3. 洛谷 P1462 通往奥格瑞玛的道路 Label: 最小化最大值 spfa (存多条边示例)
  4. CodeForces - 1095C Powers Of Two(思维)
  5. android xml获取指定,android:如何从xml文件中获取信息?
  6. Java中,为什么子类的构造方法中必须调父类的构造方法?
  7. linux打包tar包命令,Linux压缩打包方法连载之一:tar命令
  8. free命令里的buffers/cache
  9. NClay框架MVC应用入门
  10. Windows 8 Directx 开发学习笔记(五)山峰河谷模型的简单实现
  11. 龙腾P2P流媒体点播系统商业计划书
  12. Qt 之 QToolBox
  13. Bootstrap 导航栏
  14. 网闸——安全隔离网闸:从第一代走向第二代
  15. python机器学习快速入门
  16. ASF无法启动?试试这两种操作吧
  17. 黑窗口下安装MySQL数据库
  18. Android 如何优雅的集成FaceBook
  19. S5PV210 led.bin Makefile 浅析
  20. 深富策略:权重调整拖累指数 下周操作要谨慎

热门文章

  1. 前端单位的解读和换算px/%/em/rem/vh/vm/vim/vmax
  2. 生成永不过期的微信群二维码
  3. 淘宝店铺链接获取seller id,拿到店铺所有商品接口,接口接入技术解决方案
  4. 研究生从事学术研究的赫曼法则(The Laws of Herman)。
  5. python 栅格转矢量_python 矢量数据转栅格数据代码实例
  6. 学习Linux Bridge与利用Bridge创建虚拟网络
  7. PS第十一课--色阶曲线
  8. Windows 恢复使用老版的图片查看器
  9. 什么是WINSOCK WSADATA
  10. centos7随机生成密码