protected override void RefreshCore(GisEditorWpfMap currentMap, RefreshArgs refreshArgs) { measureGroup.SynchronizeState(currentMap); MeasureTrackInteractiveOverlay measurementOverlay = null; if (GisEditor.ActiveMap != null && GisEditor.ActiveMap.InteractiveOverlays.Contains("MeasurementOverlay")) { measurementOverlay = GisEditor.ActiveMap.InteractiveOverlays["MeasurementOverlay"] as MeasureTrackInteractiveOverlay; if (measurementOverlay != null) { RenderMode renderMode = MeasureSetting.Instance.UseGdiPlusInsteadOfDrawingVisual ? RenderMode.GdiPlus : RenderMode.DrawingVisual; if (measurementOverlay.RenderMode != renderMode) { measurementOverlay.RenderMode = renderMode; } switch (measurementOverlay.TrackMode) { case TrackMode.Point: GisEditor.ActiveMap.Cursor = GisEditorCursors.DrawPoint; break; case TrackMode.Rectangle: GisEditor.ActiveMap.Cursor = GisEditorCursors.DrawRectangle; break; case TrackMode.Square: GisEditor.ActiveMap.Cursor = GisEditorCursors.DrawSqure; break; case TrackMode.Ellipse: GisEditor.ActiveMap.Cursor = GisEditorCursors.DrawEllipse; break; case TrackMode.Circle: GisEditor.ActiveMap.Cursor = GisEditorCursors.DrawCircle; break; case TrackMode.Polygon: GisEditor.ActiveMap.Cursor = GisEditorCursors.DrawPolygon; break; case TrackMode.Line: GisEditor.ActiveMap.Cursor = GisEditorCursors.DrawLine; break; case TrackMode.Custom: GisEditor.ActiveMap.Cursor = GisEditorCursors.Normal; break; } if (measurementOverlay.MeasureCustomeMode == MeasureCustomeMode.Move && measurementOverlay.TrackMode == TrackMode.Custom) { GisEditor.ActiveMap.Cursor = GisEditorCursors.Cross; } } } }
private static void RemoveOverlay() { bool needRefresh = false; if (GisEditor.LayerListManager.SelectedLayerListItems.Count > 0) { foreach (var overlayEntity in GisEditor.LayerListManager.SelectedLayerListItems) { var overlay = overlayEntity.ConcreteObject as Overlay; if (overlay != null) { RemoveOneOverlay(overlay, ref needRefresh); } } } else if (GisEditor.LayerListManager.SelectedLayerListItem != null && GisEditor.LayerListManager.SelectedLayerListItem.ConcreteObject is Overlay) { var removingOverlay = GisEditor.LayerListManager.SelectedLayerListItem.ConcreteObject as Overlay; if (removingOverlay != null) { MeasureTrackInteractiveOverlay measureTrackInteractiveOverlay = removingOverlay as MeasureTrackInteractiveOverlay; if (measureTrackInteractiveOverlay != null) { if (!measureTrackInteractiveOverlay.IsVisible) { measureTrackInteractiveOverlay.IsVisible = true; } measureTrackInteractiveOverlay.ShapeLayer.MapShapes.Clear(); measureTrackInteractiveOverlay.History.Clear(); measureTrackInteractiveOverlay.Refresh(); GisEditor.UIManager.BeginRefreshPlugins(new RefreshArgs(measureTrackInteractiveOverlay, RefreshArgsDescription.ClearCommandDescription)); } else { RemoveOneOverlay(removingOverlay, ref needRefresh); } } } if (needRefresh) { GisEditor.UIManager.BeginRefreshPlugins(new RefreshArgs(GisEditor.LayerListManager.SelectedLayerListItems, RefreshArgsDescription.GetRemoveOverlayMenuItemDescription)); } }
private static IEnumerable <LayerListItem> CollectSubEntities(MeasureTrackInteractiveOverlay trackOverlay) { foreach (var item in trackOverlay.ShapeLayer.MapShapes) { var mapShape = item.Value; if (!mapShape.Feature.ColumnValues.ContainsKey("DisplayName")) { mapShape.Feature.ColumnValues["DisplayName"] = mapShape.Feature.Id; } var subEntity = new LayerListItem { Name = mapShape.Feature.ColumnValues["DisplayName"], ConcreteObject = mapShape, ExpandButtonVisibility = Visibility.Collapsed, HighlightBackgroundBrush = new SolidColorBrush(Colors.White) }; subEntity.ContextMenuItems.Add(LayerListMenuItemHelper.GetRenameMenuItem()); subEntity.ContextMenuItems.Add(LayerListMenuItemHelper.GetRemoveFeatureMenuItem()); StopRefreshProcess(() => { subEntity.IsChecked = mapShape.ZoomLevels.ZoomLevel01.IsActive; }); var wkt = mapShape.Feature.GetWellKnownType(); Styles.Style drawingStyle = null; if (wkt == WellKnownType.Line || wkt == WellKnownType.Multiline) { drawingStyle = mapShape.ZoomLevels.ZoomLevel01.CustomStyles.OfType <LineStyle>().FirstOrDefault(); } else { drawingStyle = mapShape.ZoomLevels.ZoomLevel01.CustomStyles.OfType <AreaStyle>().FirstOrDefault(); } subEntity.PreviewImage = new Image { Source = drawingStyle.GetPreviewImage(26, 26) }; subEntity.PropertyChanged += new PropertyChangedEventHandler(SubEntity_PropertyChanged); yield return(subEntity); } }
private ObservedCommand GetExportMeasuredFeaturesCommand() { return(new ObservedCommand(() => { MeasureTrackInteractiveOverlay measurementOverlay = null; if (GisEditor.ActiveMap != null && GisEditor.ActiveMap.InteractiveOverlays.Contains("MeasurementOverlay")) { measurementOverlay = GisEditor.ActiveMap.InteractiveOverlays["MeasurementOverlay"] as MeasureTrackInteractiveOverlay; } if (measurementOverlay != null) { ExportWizardWindow window = new ExportWizardWindow(ExportMode.ExportMeasuredFeatures, measurementOverlay); if (window.ShowDialog().Value) { RunTask(window); } } }, () => GisEditor.ActiveMap != null)); }
// We first save it as raster file to TEMP folder and then launch it private static void OpenGoogleEarthItemClick(object sender, RoutedEventArgs e) { List <FeatureLayer> featureLayers = GisEditor.ActiveMap.GetFeatureLayers(true).Select(l => { FeatureLayer featureLayer = null; lock (l) { if (l.IsOpen) { l.Close(); } featureLayer = (FeatureLayer)l.CloneDeep(); l.Open(); } return(featureLayer); }).ToList(); AnnotationTrackInteractiveOverlay annotationOverlay = GisEditor.ActiveMap.InteractiveOverlays.OfType <AnnotationTrackInteractiveOverlay>().FirstOrDefault(); if (annotationOverlay != null && annotationOverlay.TrackShapeLayer.InternalFeatures.Count > 0) { featureLayers.Add(annotationOverlay.TrackShapeLayer); } MeasureTrackInteractiveOverlay measureOverlay = GisEditor.ActiveMap.InteractiveOverlays.OfType <MeasureTrackInteractiveOverlay>().FirstOrDefault(); if (measureOverlay != null && measureOverlay.ShapeLayer.MapShapes.Count > 0) { measureOverlay.TrackShapeLayer.Close(); InMemoryFeatureLayer featureLayer = (InMemoryFeatureLayer)measureOverlay.TrackShapeLayer.CloneDeep(); measureOverlay.TrackShapeLayer.Open(); foreach (var item in measureOverlay.ShapeLayer.MapShapes) { featureLayer.InternalFeatures.Add(item.Value.Feature); } featureLayers.Add(featureLayer); } string installedPath = ((MenuItem)sender).Tag.Equals("GoogleEarth") ? GetGoogleEarthInstalledPath() : GetGoogleEarthProInstalledPath(); GisEditor.ActiveMap.OpenInGoogleEarth(installedPath, featureLayers.ToArray()); }
/// <summary> /// MeasureOptionViewModel /// MeasureOptionUserControl /// </summary> public MeasureSetting() { allowCollectFixedElements = true; MeasurementStyle = MeasureTrackInteractiveOverlay.GetInitialCompositeStyle(); }