Пример #1
0
        private void RestoreSnapshot(AnnotationSnapshot snapshot)
        {
            CurrentAnnotationOverlay.TrackShapeLayer.InternalFeatures.Clear();
            CurrentAnnotationOverlay.TrackShapeLayer.FeatureIdsToExclude.Clear();
            CurrentEditOverlay.EditShapesLayer.InternalFeatures.Clear();

            if (MarkerHelper.CurrentMarkerOverlay != null)
            {
                MarkerHelper.CurrentMarkerOverlay.Markers.Clear();
            }

            foreach (var feature in snapshot.AnnotationFeatures)
            {
                CurrentAnnotationOverlay.TrackShapeLayer.InternalFeatures.Add(feature.Id, feature.CloneDeep(ReturningColumnsType.AllColumns));
            }

            foreach (var featureId in snapshot.FeatureIdsToExclude)
            {
                CurrentAnnotationOverlay.TrackShapeLayer.FeatureIdsToExclude.Add(featureId);
            }

            foreach (var feature in snapshot.EditingVectorFeatures)
            {
                CurrentEditOverlay.EditShapesLayer.InternalFeatures.Add(feature);
            }

            foreach (var markerFeature in snapshot.EditingMarkerFeatures)
            {
                MarkerHelper.AddMarker((PointShape)markerFeature.GetShape()
                                       , markerFeature.ColumnValues[AnnotationTrackInteractiveOverlay.AnnotationTextColumnName]
                                       , markerFeature.Id
                                       , markerFeature.ColumnValues[AnnotationTrackInteractiveOverlay.ValueStyleMatchColumnName]);
            }

            if (CurrentAnnotationOverlay.MapArguments != null)
            {
                CurrentAnnotationOverlay.Refresh();
            }

            CurrentEditOverlay.CalculateAllControlPoints();

            if (CurrentEditOverlay.MapArguments != null)
            {
                CurrentEditOverlay.Refresh();
            }

            if (MarkerHelper.CurrentMarkerOverlay != null)
            {
                MarkerHelper.CurrentMarkerOverlay.Refresh();
            }

            RaisePropertyChanged(() => CanUndo);
            RaisePropertyChanged(() => CanRedo);
        }
Пример #2
0
        private AnnotationSnapshot GetCurrentSnapshot()
        {
            AnnotationSnapshot snapshot = new AnnotationSnapshot();

            foreach (var feature in CurrentAnnotationOverlay.TrackShapeLayer.InternalFeatures)
            {
                snapshot.AnnotationFeatures.Add(feature.CloneDeep(ReturningColumnsType.AllColumns));
            }

            foreach (var featureId in CurrentAnnotationOverlay.TrackShapeLayer.FeatureIdsToExclude)
            {
                snapshot.FeatureIdsToExclude.Add(featureId);
            }

            foreach (var feature in CurrentEditOverlay.EditShapesLayer.InternalFeatures)
            {
                snapshot.EditingVectorFeatures.Add(feature.CloneDeep(ReturningColumnsType.AllColumns));
            }

            if (MarkerHelper.CurrentMarkerOverlay != null)
            {
                foreach (var marker in MarkerHelper.CurrentMarkerOverlay.Markers)
                {
                    string featureId = marker.Tag as string;
                    string content   = String.Empty;
                    if (marker.Content != null && marker.Content is TextBox)
                    {
                        content = ((TextBox)marker.Content).Text;
                    }

                    PointShape position = new PointShape(marker.Position.X, marker.Position.Y);

                    var vectorFeature = CurrentAnnotationOverlay.TrackShapeLayer.InternalFeatures
                                        .FirstOrDefault(tmpFeature => tmpFeature.Id.Equals(featureId, StringComparison.Ordinal));

                    if (vectorFeature != default(Feature))
                    {
                        Dictionary <string, string> columnValues = new Dictionary <string, string>();
                        columnValues.Add(AnnotationTrackInteractiveOverlay.ValueStyleMatchColumnName
                                         , vectorFeature.ColumnValues[AnnotationTrackInteractiveOverlay.ValueStyleMatchColumnName]);
                        columnValues.Add(AnnotationTrackInteractiveOverlay.AnnotationTextColumnName, content);
                        Feature markerFeature = new Feature(position.GetWellKnownBinary(), featureId, columnValues);
                        snapshot.EditingMarkerFeatures.Add(markerFeature);
                    }
                }
            }

            return(snapshot);
        }