Example #1
0
        private void RefreshTarget2()
        {
            ObjectMarker targetMarker = null;
            GMapMarker   target       = null;

            ObjTarget2 = UnitCore.Instance.TargetObj2;
            //refresh 2D target
            if (MapMode == 0)
            {
                if (UnitCore.Instance.mainMap != null)
                {
                    var itor = UnitCore.Instance.mainMap.Markers.GetEnumerator();
                    while (itor.MoveNext())
                    {
                        var marker = itor.Current;

                        if ((int)marker.Tag == 902)//900+1,2,3,4...
                        {
                            if (marker.Shape is ObjectMarker obj)
                            {
                                targetMarker = obj;
                                target       = marker;
                            }
                            break;
                        }
                    }
                }
                if (target == null || targetMarker == null)
                {
                    return;
                }

                App.Current.Dispatcher.Invoke(new Action(() =>
                {
                    targetMarker.Refresh(UnitCore.Instance.TargetObj2);
                    var point = new PointLatLng(UnitCore.Instance.TargetObj2.Latitude,
                                                UnitCore.Instance.TargetObj2.Longitude);
                    point.Offset(UnitCore.Instance.MainMapCfg.MapOffset.Lat,
                                 UnitCore.Instance.MainMapCfg.MapOffset.Lng);
                    target.Position = point;
                    //remove legacy route
                    var isExist = UnitCore.Instance.mainMap.Markers.Contains(UnitCore.Instance.TargetRoute2);
                    UnitCore.Instance.BuoyLock.WaitOne();
                    UnitCore.Instance.mainMap.Markers.Remove(UnitCore.Instance.TargetRoute2);
                    UnitCore.Instance.BuoyLock.ReleaseMutex();
                    UnitCore.Instance.routePoint2.Remove(PointLatLng.Zero);

                    UnitCore.Instance.routePoint2.Add(point);
                    //if (UnitCore.Instance.routePoint.Count > 300)
                    //    UnitCore.Instance.routePoint.RemoveAt(0);
                    if (UnitCore.Instance.routePoint2.Count == 1)
                    {
                        return;
                    }
                    UnitCore.Instance.TargetRoute2 = new GMapMarker(UnitCore.Instance.routePoint2[0]);
                    {
                        UnitCore.Instance.TargetRoute2.Tag        = 102;
                        UnitCore.Instance.TargetRoute2.routebrush = Brushes.Yellow;

                        UnitCore.Instance.TargetRoute2.Route.AddRange(UnitCore.Instance.routePoint2);

                        UnitCore.Instance.TargetRoute2.RegenerateRouteShape(UnitCore.Instance.mainMap);
                        UnitCore.Instance.TargetRoute2.ZIndex = -1;
                    }
                    if (isExist)
                    {
                        UnitCore.Instance.BuoyLock.WaitOne();
                        UnitCore.Instance.mainMap.Markers.Add(UnitCore.Instance.TargetRoute2);
                        UnitCore.Instance.BuoyLock.ReleaseMutex();
                    }

                    if (UnitCore.Instance.AutoTrace)
                    {
                        UnitCore.Instance.mainMap.Position = point;
                    }
                }));
            }
        }
Example #2
0
        private void RefreshTarget1()
        {
            ObjectMarker targetMarker = null;
            GMapMarker   target       = null;

            ObjTarget1 = UnitCore.Instance.TargetObj1;
            //refresh 2D target
            if (MapMode == 0)
            {
                if (UnitCore.Instance.mainMap != null)
                {
                    var itor = UnitCore.Instance.mainMap.Markers.GetEnumerator();
                    while (itor.MoveNext())
                    {
                        var marker = itor.Current;

                        if ((int)marker.Tag == 901)//900+1,2,3,4...
                        {
                            if (marker.Shape is ObjectMarker obj)
                            {
                                targetMarker = obj;
                                target       = marker;
                            }
                            break;
                        }
                    }
                }
                if (target == null || targetMarker == null)
                {
                    return;
                }

                App.Current.Dispatcher.Invoke(new Action(() =>
                {
                    targetMarker.Refresh(UnitCore.Instance.TargetObj1);
                    var point = new PointLatLng(UnitCore.Instance.TargetObj1.Latitude,
                                                UnitCore.Instance.TargetObj1.Longitude);
                    point.Offset(UnitCore.Instance.MainMapCfg.MapOffset.Lat,
                                 UnitCore.Instance.MainMapCfg.MapOffset.Lng);
                    target.Position = point;
                    //remove legacy route
                    var isExist = UnitCore.Instance.mainMap.Markers.Contains(UnitCore.Instance.TargetRoute1);
                    UnitCore.Instance.BuoyLock.WaitOne();
                    UnitCore.Instance.mainMap.Markers.Remove(UnitCore.Instance.TargetRoute1);
                    UnitCore.Instance.BuoyLock.ReleaseMutex();
                    UnitCore.Instance.routePoint1.Remove(PointLatLng.Zero);

                    UnitCore.Instance.routePoint1.Add(point);
                    //if (UnitCore.Instance.routePoint.Count > 300)
                    //    UnitCore.Instance.routePoint.RemoveAt(0);
                    if (UnitCore.Instance.routePoint1.Count == 1)
                    {
                        return;
                    }
                    UnitCore.Instance.TargetRoute1 = new GMapMarker(UnitCore.Instance.routePoint1[0]);
                    {
                        UnitCore.Instance.TargetRoute1.Tag        = 101;
                        UnitCore.Instance.TargetRoute1.routebrush = Brushes.Red;

                        UnitCore.Instance.TargetRoute1.Route.AddRange(UnitCore.Instance.routePoint1);

                        UnitCore.Instance.TargetRoute1.RegenerateRouteShape(UnitCore.Instance.mainMap);
                        UnitCore.Instance.TargetRoute1.ZIndex = -1;
                    }
                    if (isExist)
                    {
                        UnitCore.Instance.BuoyLock.WaitOne();
                        UnitCore.Instance.mainMap.Markers.Add(UnitCore.Instance.TargetRoute1);
                        UnitCore.Instance.BuoyLock.ReleaseMutex();
                    }

                    if (UnitCore.Instance.AutoTrace)
                    {
                        UnitCore.Instance.mainMap.Position = point;
                    }
                }));
            }
            else//3D
            {
                Refresh3DView();
                if (ObjInfoVisible)
                {
                    TargetInfo = UnitCore.Instance.TargetObj1.Name + "   " + UnitCore.Instance.TargetObj1.Time + "(UTC)\r" +
                                 "经度:" + UnitCore.Instance.TargetObj1.Longitude.ToString("F06") + "\r|纬度:" +
                                 UnitCore.Instance.TargetObj1.Latitude.ToString("F06") + "\r" +
                                 "测算深度:" + UnitCore.Instance.TargetObj1.Depth.ToString("F02") +
                                 "测距状态:" + UnitCore.Instance.TargetObj1.Status;
                }
                else
                {
                    TargetInfo = "";
                }
            }
        }