Ejemplo n.º 1
0
 private void OnEditLayerSelect(object arg)
 {
     if (arg == null)
     {
         // In case of templates, arg is null
         //currentEditLayer = this.SelectedEditLayer;
     }
     else
     {
         currentEditLayer = arg as EditLayerData;
     }
     if (currentEditLayer != null)
         HandleEditSelect(currentEditLayer);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Subscription method to handle the map initialisation
        /// </summary>
        /// <param name="mapData"></param>
        public void OnMapChanged(MapData mapData)
        {
            try
            {
                if (mapData != null)
                {
                    this.IsMapLoaded = true;
                    this.RaisePropertyChanged(() => this.IsMapLoaded);
                    gisEditing.GetEditorTool().EditCompleted += Editor_EditCompleted;
                    // Initialise editable layers
                    this.SubTypeVisibility = Visibility.Collapsed;
                    this.TemplateVisibility = Visibility.Collapsed;
                    this.SymbolMarkers = new ObservableCollection<SymbolMarkerInfo>();
                    foreach (var item in gisEditing.GetEditLayers())
                    {
                        this.EditLayers.Add(item);
                        switch (item.LayerGeometryType)
                        {
                            case ESRI.ArcGIS.Client.Tasks.GeometryType.MultiPoint:
                                if (gisEditing.GetMarkerInfo(item.LayerName).FirstOrDefault(l => l.ObjectFeatureType != null) != null)
                                {
                                    foreach (var item2 in gisEditing.GetMarkerInfo(item.LayerName))
                                        this.SymbolMarkers.Add(item2);
                                    this.SubTypeVisibility = Visibility.Visible;
                                }

                                break;
                            case ESRI.ArcGIS.Client.Tasks.GeometryType.Point:
                                if (gisEditing.GetMarkerInfo(item.LayerName).FirstOrDefault(l => l.ObjectFeatureType != null) != null)
                                {
                                    foreach (var item2 in gisEditing.GetMarkerInfo(item.LayerName))
                                        this.SymbolMarkers.Add(item2);
                                    this.SubTypeVisibility = Visibility.Visible;
                                }
                                break;
                            case ESRI.ArcGIS.Client.Tasks.GeometryType.Polygon:
                                if (gisEditing.GetMarkerInfo(item.LayerName).FirstOrDefault(l => l.ObjectFeatureType != null) != null)
                                {
                                    foreach (var item2 in gisEditing.GetMarkerInfo(item.LayerName))
                                        this.SymbolMarkers.Add(item2);
                                    this.SubTypeVisibility = Visibility.Visible;
                                }
                                else
                                {
                                    this.EditTemplates = gisEditing.GetTemplates(item.LayerName);
                                    if (this.EditTemplates.Count > 0)
                                    {
                                        this.TemplateVisibility = Visibility.Visible;
                                    }
                                }
                                break;
                            case ESRI.ArcGIS.Client.Tasks.GeometryType.Polyline:
                                if (gisEditing.GetMarkerInfo(item.LayerName).FirstOrDefault(l => l.ObjectFeatureType != null) != null)
                                {
                                    foreach (var item2 in gisEditing.GetMarkerInfo(item.LayerName))
                                        this.SymbolMarkers.Add(item2);
                                    this.SubTypeVisibility = Visibility.Visible;
                                }
                                break;
                            default:
                                break;
                        }
                    }
                    EditVerticesParameter = new EditorParameterCommand();
                    AddGeometryParameter = new EditorParameterCommand();
                    MovePointParameter = new EditorParameterCommand() { Action = "Move" };
                    DeleteGeometryParameter = new EditorParameterCommand();
                    SelectParameter = new EditorParameterCommand() { SelectionMode = DrawMode.Rectangle };
                    this.SelectLayerList = (this.EditLayers.Count > 1 ? Visibility.Visible : Visibility.Collapsed);
                    RaisePropertyChanged(() => this.EditLayers);
                    RaisePropertyChanged(() => this.EditTemplates);
                    if (this.EditLayers.Count > 0)
                    {
                        currentEditLayer = this.EditLayers[0];
                        this.SelectedEditLayer = this.EditLayers[0];
                    }
                    // Define edit parameters
                    this.RaisePropertyChanged(() => this.EditVerticesParameter);
                    this.RaisePropertyChanged(() => this.AddGeometryParameter);
                    this.RaisePropertyChanged(() => this.MovePointParameter);
                    this.RaisePropertyChanged(() => this.DeleteGeometryParameter);
                    this.RaisePropertyChanged(() => this.SelectParameter);
                    this.SymbolSelected = new DelegateCommand<object>(
                        this.OnSymbolSelected, this.CanSymbolSelected);
                    // Initialisation EditGeometry
                    editGeometry = new EditGeometry(gisOperations.GetMap());
                    editGeometry.GeometryEdit += EditGeometryEdited;
                    RefreshButtonStatus();
                    SetCustomCommands();
                }
            }
            catch (System.Exception ex)
            {
                // Error handling
                ShowErrorMessagebox.Raise(new Notification
                {
                    Content = String.Format("OnMapChanged-{0}[{1}]", ex.Message, ex.StackTrace),
                    Title = "System error"
                });
            }
        }
Ejemplo n.º 3
0
 private void HandleEditSelect(EditLayerData editSelect)
 {
     try
     {
         if (editSelect.LayerGeometryType != GeometryType.Point)
         {
             AddGeometryParameter.LayerId = editSelect.LayerName;
             this.RaisePropertyChanged(() => this.AddGeometryParameter);
         }
         if (editSelect.LayerGeometryType == GeometryType.Point)
         {
             MovePointParameter.LayerId = editSelect.LayerName;
             this.RaisePropertyChanged(() => this.MovePointParameter);
         }
         DeleteGeometryParameter.LayerId = editSelect.LayerName;
         this.RaisePropertyChanged(() => this.DeleteGeometryParameter);
         if (editSelect.LayerGeometryType != GeometryType.Point)
             EditVerticesParameter.LayerId = editSelect.LayerName;
         this.RaisePropertyChanged(() => this.EditVerticesParameter);
         SelectParameter.LayerId = editSelect.LayerName;
         this.RaisePropertyChanged(() => this.SelectParameter);
         DelegateCommand<object> delegateCommand = this._moveGeometryCommand as DelegateCommand<object>;
         delegateCommand.RaiseCanExecuteChanged();
     }
     catch (Exception ex)
     {
         ShowErrorMessagebox.Raise(new Notification
         {
             Content = String.Format("HandleEditSelect-{0}[{1}]", ex.Message, ex.StackTrace),
             Title = "System error"
         });
     }
 }