Exemple #1
0
        private M标记 添加标记(M号码 __号码)
        {
            var __随机数  = new Random();
            var __随机数1 = __随机数.NextDouble() * 0.01;
            var __随机数2 = __随机数.NextDouble() * 0.01;

            var __标记 = new M标记
            {
                Id   = __号码.Id,
                称    = __号码.称,
                号码   = __号码.号码,
                描述   = __号码.描述,
                经度   = 118.829829 + __随机数1,
                纬度   = 32.031709 + __随机数2,
                打开描述 = false,
            };
            var __序列化器 = new JavaScriptSerializer();
            var __字符串  = __序列化器.Serialize(__标记);

            this.Invoke(new Action(() =>
            {
                _HtmlDocument.InvokeScript("添加标记", new object[] { __字符串 });
            }));
            return(__标记);
        }
Exemple #2
0
        private void 添加标记(M标记 __标记)
        {
            var __序列化器 = new JavaScriptSerializer();
            var __字符串  = __序列化器.Serialize(__标记);

            try
            {
                this.Invoke(new Action(() =>
                {
                    _HtmlDocument.InvokeScript("添加标记", new object[] { __字符串 });
                }));
            }
            catch (Exception)
            {
                //记录异常,排除窗口关闭时更新界面
            }
        }
Exemple #3
0
        private void 模拟数据(object __参数)
        {
            var  __格式   = __参数 as Tuple <M号码, DateTime>;
            var  __号码   = __格式.Item1;
            var  __时间   = __格式.Item2;
            bool __第一次  = true;
            var  __随机数  = new Random();
            var  __起始经度 = 118.829829 + __随机数.NextDouble() * 0.1;
            var  __起始纬度 = 32.031709 + __随机数.NextDouble() * 0.1;
            var  __次数   = 1;

            while (_标记缓存.ContainsKey(__号码.Id) && _跟踪开始时间.ContainsKey(__号码.Id) && _跟踪开始时间[__号码.Id] == __时间)
            {
                if (!__第一次)
                {
                    除标记(__号码.Id);
                }
                else
                {
                    __第一次 = false;
                }
                var __随机数1 = __随机数.NextDouble() * 0.001;
                var __随机数2 = __随机数.NextDouble() * 0.001;
                __起始经度 += __随机数1;
                __起始纬度 += __随机数2;
                var __标记 = new M标记
                {
                    Id   = __号码.Id,
                    称    = __号码.称,
                    号码   = __号码.号码,
                    描述   = __号码.描述,
                    经度   = __起始经度,
                    纬度   = __起始纬度,
                    打开描述 = false,
                    误差半径 = 20,
                    方向   = 30 * __次数++ % 360,
                    时间   = DateTime.Now.ToString(),
                };
                lock (_标记缓存锁)
                {
                    _标记缓存[__号码.Id] = 添加标记(__标记);
                }
                System.Threading.Thread.Sleep(__随机数.Next(3, 30) * 1000);
            }
        }
Exemple #4
0
        void in定时器_Tick(object sender, EventArgs e)
        {
            if (this._暂停)
            {
                return;
            }
            var __播放起始时间 = _当前播放时间;

            _当前播放时间           = _当前播放时间.AddMilliseconds(_定时器间隔 * _播放倍速);
            this.out当前时间.Text = _当前播放时间.ToString();
            var __进度 = (int)(_当前播放时间.Subtract(_起始时间).TotalSeconds *this.out播放进度.Maximum / _结束时间.Subtract(_起始时间).TotalSeconds);

            this.out播放进度.Value = Math.Min(this.out播放进度.Maximum, __进度);
            foreach (var __轨迹信息 in _未播轨迹列表)
            {
                //查找对应时段内的轨迹,如果有则删除原标记,添加新标记
                var __匹配GPS = __轨迹信息.GPS列表.FindLast(q => q.时间 <= _当前播放时间);
                if (__匹配GPS != null)
                {
                    除标记(__轨迹信息.号码.Id);
                    var __标记 = new M标记
                    {
                        Id   = __轨迹信息.号码.Id,
                        称    = __轨迹信息.号码.称,
                        号码   = __轨迹信息.号码.号码,
                        描述   = __轨迹信息.号码.描述,
                        经度   = __匹配GPS.经度,
                        纬度   = __匹配GPS.纬度,
                        打开描述 = false,
                        误差半径 = __匹配GPS.误差半径,
                        方向   = __匹配GPS.方向,
                        颜色   = __轨迹信息.轨迹颜色,
                        时间   = __匹配GPS.时间.ToString(),
                    };
                    添加标记(__标记);
                    _标记缓存[__轨迹信息.号码.Id] = __标记;
                    __轨迹信息.GPS列表.RemoveAll(q => q.时间 <= _当前播放时间);
                    _跟踪状态[__标记.Id] = "在线";
                }
                else
                {
                    //检测时间状态
                    if (!_标记缓存.ContainsKey(__轨迹信息.号码.Id))
                    {
                        continue;
                    }
                    var      __标记 = _标记缓存[__轨迹信息.号码.Id];
                    DateTime __最后时间;
                    if (!DateTime.TryParse(__标记.时间, out __最后时间))
                    {
                        continue;
                    }
                    if (__最后时间.AddSeconds(_离线间隔) < _当前播放时间)
                    {
                        if (!_跟踪状态.ContainsKey(__标记.Id) || _跟踪状态[__标记.Id] != "离线")
                        {
                            _跟踪状态[__标记.Id] = "离线";
                            设置标注样式(__标记.Id, "离线");
                            System.Diagnostics.Debug.WriteLine(__标记.Id + "离线");
                        }
                    }
                    else if (__最后时间.AddSeconds(_即将离线间隔) < DateTime.Now)
                    {
                        if (!_跟踪状态.ContainsKey(__标记.Id) || _跟踪状态[__标记.Id] != "即将离线")
                        {
                            _跟踪状态[__标记.Id] = "即将离线";
                            设置标注样式(__标记.Id, "即将离线");
                            System.Diagnostics.Debug.WriteLine(__标记.Id + "即将离线");
                        }
                    }
                }
            }

            if (_结束时间 <= _当前播放时间)
            {
                do停止.PerformClick();
            }
        }