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; } })); } }
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 = ""; } } }