void DisplayOverlay() { if ((!_allViewModelsAreReady) || (!_viewIsActivated)) return; OverlayShapeMapLayer overlayLayer; if (_selectedOverlayDescriptor == null) { overlayLayer = EnvironmentTabMapLayers.Find<OverlayShapeMapLayer>(LayerType.OverlayFile, "Overlay"); if (overlayLayer != null) overlayLayer.IsChecked = false; return; } //_dispatcher.InvokeIfRequired(DisplayWorldMap, DispatcherPriority.Normal); var overlayFilename = Path.Combine(Globals.AppSettings.ScenarioDataDirectory, _selectedRangeComplexDescriptor.Data.Name, "Areas", Path.GetFileNameWithoutExtension(_selectedOverlayDescriptor.DataFilename) + ".ovr"); overlayLayer = EnvironmentTabMapLayers.Find<OverlayShapeMapLayer>(LayerType.OverlayFile, "Overlay") ?? new OverlayShapeMapLayer { Name = "Overlay", CanBeRemoved = true, CanBeReordered = true, CanChangeAreaColor = false, CanChangeLineColor = true, LineWidth = 1, LayerType = LayerType.OverlayFile, }; overlayLayer.Clear(); var overlay = new OverlayFile(overlayFilename); foreach (var shape in overlay.Shapes) overlayLayer.Add(shape); overlayLayer.Done(); overlayLayer.IsChecked = true; if (EnvironmentTabMapLayers.IndexOf(overlayLayer) == -1) EnvironmentTabMapLayers.Add(overlayLayer); MediatorMessage.Send(MediatorMessage.RefreshMap, true); }
public static GeoRect ValidateFile(string overlayFileName, string overlayName, out string errorText) { errorText = ""; if (!File.Exists(overlayName)) { errorText += "Specified " + overlayName + " does not exist" + System.Environment.NewLine; } try { var myOvr = new OverlayFile(overlayFileName); if (myOvr.Shapes.Length != 1 || !myOvr.Shapes[0].IsUsableAsPerimeter) errorText += "Specified " + overlayName + " is invalid" + System.Environment.NewLine; else return new GeoRect(myOvr.Shapes[0].GeoRect); } catch (Exception e) { errorText += "Error loading " + overlayFileName + ": " + e.Message + System.Environment.NewLine; } return null; }
void ZoomToRangeComplex() { var opAreaOverlayFilename = Path.Combine(Globals.AppSettings.ScenarioDataDirectory, _selectedRangeComplexDescriptor.Data.Name, "Areas", _selectedRangeComplexDescriptor.Data.OpsLimitFile); var opsLimit = new OverlayFile(opAreaOverlayFilename); var north = (float)opsLimit.Shapes[0].BoundingBox.Bottom + 3; var west = (float)opsLimit.Shapes[0].BoundingBox.Left - 3; var south = (float)opsLimit.Shapes[0].BoundingBox.Top - 3; var east = (float)opsLimit.Shapes[0].BoundingBox.Right + 3; var mapExtent = new RectangleShape(west, north, east, south); MediatorMessage.Send(MediatorMessage.SetCurrentExtent, mapExtent); }