예제 #1
0
        private void CalLocation()
        {
            NEWTRACK gps = _car?.LastGpsData;

            //异常 经纬度过滤
            if (gps == null)
            {
                return;
            }
            if (gps.LOCATE != 1 || !GPSTool.CheckLaLo(gps.LATITUDE, gps.LONGITUDE))
            {
                return;
            }

            if (_mapLayer?.MapAdjust == null)
            {
                return;
            }
            _location = _mapLayer.MapAdjust.GetLoLa(gps.LONGITUDE, gps.LATITUDE, gps.OFFSETX, gps.OFFSETY);
        }
예제 #2
0
        /// <summary>
        /// 历史回放模式
        /// </summary>
        //public bool HistoryMode { get; set; }

        bool RefreshState(NEWTRACK gps, string fieldName = null, bool noWeb = false)
        {
            if (gps == null)
            {
                return(false);
            }

            CarStatus.RefreshStatus(gps.STATUS, gps.STOPTIME);  //车辆状态
            OnPropertyChanged(nameof(CarStatus), true);
            AlarmStatus.RefreshAlarmStatus(gps.ALARM);
            OnPropertyChanged(nameof(AlarmStatus), true);

            if (gps.IsRealTime || _isCopy || (!gps.IsRealTime && !_isCopy))
            {     //在线或者历史回放状态刷新
                if (!_isCopy && (CarStatus.offline == true || !gps.IsRealTime))
                { //车辆下线
                    CarState = CarState.OffLine;
                }
                else
                {
                    //在线状态下
                    if (AlarmStatus.HasAlarm)
                    {
                        //报警状态
                        CarState = CarState.Alarm;
                        if (!_isCopy)
                        {
                            OnHaveNewAlarm(AlarmType.Normal); //新的报警
                        }
                    }
                    else if (gps.LOCATE != 1) //不定位
                    {
                        CarState = CarState.NoGps;
                    }
                    else if (gps.SPEED >= 3)    //行驶中
                    {
                        CarState = CarState.Run;
                    }
                    else
                    {   //速度小于3km/h 认定为停车(可去除部分漂移)
                        CarState = CarState.Stop;
                    }
                }
            }
            else
            {
                //不在线状态判断
                CarState = CarState.OffLine;
            }

            if (noWeb)
            {
                return(true);
            }
            if (!gps.IsRealTime)
            {
                return(true);
            }
            if (CarStatus.blindarea_status)
            {
                return(true);
            }
            if (!NEWTRACK.IsWebPosition)
            {
                return(true);
            }
            if (!IsInView)
            {
                return(true);
            }
            if (!GPSTool.CheckLaLo(gps.LATITUDE, gps.LONGITUDE))
            {
                return(true);
            }

            GeoLatLng geo = GPSTool.wgs84togcj02(gps.LONGITUDE, gps.LATITUDE);

            geo.longitude = Math.Round(geo.longitude, 6);
            geo.latitude  = Math.Round(geo.latitude, 6);
            Common_liby.InvokeMethodOnMainThread(() =>
            {
                HtmlPage.Window.Invoke("GetWebPosition", geo.longitude, geo.latitude, MAC);
            });
            return(false);
        }