Exemple #1
0
        internal static bool CommitTextAnnotations()
        {
            bool isChanged = false;

            //if (CurrentMarkerOverlay != null && !ViewModel.IsInSelectMoveMode)
            if (CurrentMarkerOverlay != null)
            {
                var markerResults = CurrentMarkerOverlay.Markers
                                    .Where(marker => !string.IsNullOrEmpty((marker.Content as TextBox).Text))
                                    .Select(marker =>
                {
                    TextBox textBox   = (TextBox)marker.Content;
                    string text       = textBox.Text;
                    string styleValue = textBox.Tag.ToString();
                    return(new
                    {
                        Text = text,
                        WorldX = marker.Position.X,
                        WorldY = marker.Position.Y,
                        Id = (string)(marker.Tag ?? ViewModel.CurrentAnnotationOverlay.NewFeatureName()),
                        StyleValue = styleValue
                    });
                }).ToArray();

                shouldAddTextBoxWhenNextClick = markerResults.Length == 0;
                foreach (var markerResult in markerResults)
                {
                    var currentTrackShapeLayer = ViewModel.CurrentAnnotationOverlay.TrackShapeLayer;
                    var correspondFeature      = currentTrackShapeLayer.InternalFeatures.FirstOrDefault(f => f.Id.Equals(markerResult.Id));
                    int index = -1;
                    if (correspondFeature != null)
                    {
                        index = currentTrackShapeLayer.InternalFeatures.IndexOf(correspondFeature);
                        currentTrackShapeLayer.InternalFeatures.Remove(correspondFeature);
                    }

                    var newFeature = new Feature(new Vertex(markerResult.WorldX, markerResult.WorldY), markerResult.Id);

                    if (index > -1)
                    {
                        currentTrackShapeLayer.InternalFeatures.Insert(index, newFeature);
                    }
                    else
                    {
                        currentTrackShapeLayer.InternalFeatures.Add(markerResult.Id, newFeature);
                    }

                    if (currentTrackShapeLayer.FeatureIdsToExclude.Contains(markerResult.Id))
                    {
                        currentTrackShapeLayer.FeatureIdsToExclude.Remove(markerResult.Id);
                    }

                    ViewModel.CurrentAnnotationOverlay.StyleLastTextAnnotation(newFeature, markerResult.Text, markerResult.StyleValue);
                    isChanged = true;
                }

                CurrentMarkerOverlay.Markers.Clear();

                CurrentMarkerOverlay.Refresh();
                ViewModel.CurrentAnnotationOverlay.Refresh();
                ViewModel.SyncUIState();
                GisEditor.UIManager.RefreshPlugins(new RefreshArgs(CurrentMarkerOverlay, RefreshArgsDescription.CommitTextAnnotationsDescription));
            }

            return(isChanged);
        }
Exemple #2
0
 private static void CancelTextAnnotation()
 {
     CurrentMarkerOverlay.Markers.Clear();
     CurrentMarkerOverlay.Refresh();
 }