Mejores prácticas: Introducción

ArcGIS Viewer for Silverlight incluye una interfaz de programación de aplicaciones (API) de extensibilidad que permite a los desarrolladores acceso a los mapas y capas seleccionados, así como a métodos para mostrar la interfaz de usuario (UI) en los cuadros de diálogo y la capacidad de guardar y cargar datos de configuración. La API de extensibilidad se incluye en ArcGIS Extensibility SKD for Silverlight. Para comenzar, determine primero si va a crear una herramienta o un comportamiento. Una vez que haya decidido sobre el tipo de add-in a crear, consulte la siguiente sección sobre Trabajar con el mapa y capa seleccionada para obtener información detallada sobre cómo acceder al mapa desde su add-in.

Herramientas y comportamientos

Las herramientas proporcionan una manera simple de mostrar la lógica que debería iniciar el usuario. Si tiene sentido que la funcionalidad que está implementando se inicie al hacer que un usuario haga clic en un botón en la barra de herramientas, entonces debe recopilar esta funcionalidad en una herramienta. Una herramienta de identificación es un ejemplo de una situación en la que proporcionaría un botón en la barra de herramientas para el usuario.

Los comportamientos de mapa proporcionan una manera simple de mostrar la funcionalidad que siempre debe estar habilitada. Los comportamientos de mapa proporcionan funcionalidad sin la necesidad de la interacción del usuario. Si está desarrollando una funcionalidad para añadir una capacidad o modificación que debe estar siempre presente, entonces debe recopilarla como un comportamiento de mapa. Los comportamientos de mapa se pueden utilizar, por ejemplo, para restringir la extensión de mapa, mostrar las coordenadas del ratón sobre el puntero del ratón, o mostrar un cuadro de diálogo introductorio cuando se carga la aplicación.

Para obtener más información y ejemplos, consulte Crear una herramienta y Crear un comportamiento de mapa.

Trabajar con el mapa y la capa seleccionada

Se puede acceder al mapa y a la capa seleccionada a través de las propiedades en el objeto estático ESRI.ArcGIS.Client.Extensibility.MapApplication. El objeto MapApplication está disponible a través de la propiedad MapApplication.Current. Para acceder al objeto del mapa, utilice MapApplication.Current.Map en el código del add-in. Para acceder a la capa seleccionada, utilice MapApplication.Current.SelectedLayer. El código del comando simple del tema Crear una herramienta demuestra cómo acceder al mapa en el método CanExecute. El siguiente código muestra un ejemplo de un comando simple donde se muestra la Id. de la capa seleccionada cuando se ejecuta la herramienta y la lógica en el método CanExecute es tal que la herramienta se habilita solamente si se selecciona GraphicsLayer.

[Export(typeof(ICommand))]
[DisplayName("Show GraphicsLayer ID")]
[Category("My Tools")]
[Description("Shows the ID of the selected GraphicsLayer")]
[DefaultIcon("Path to icon, ex: "/Viewer.Addins;component/Images/Identify.png"")]
public class ShowGraphicsLayerIdCommand : ICommand
{
     public void Execute(object parameter)
     {
          // Show the selected layer's ID.
          MapApplication.Current.ShowWindow("Layer ID", new TextBlock()
            {
                Text = MapApplication.Current.SelectedLayer.ID,
                TextWrapping = TextWrapping.Wrap,
                Margin = new Thickness(30),
                MaxWidth = 480
            });
   
     }    
 
     public bool CanExecute(object parameter)
     {
          // Return true (that is, make the command executable) only if the selected layer is a GraphicsLayer.
          return MapApplication.Current.SelectedLayer is GraphicsLayer;
     }
 
     public event EventHandler CanExecuteChanged;
}
La API de extensibilidad proporciona un evento que se dispara cuando la capa seleccionada cambia, así como métodos para recuperar y establecer los nombres de las capas. Los nombres de las capas son la forma en la que se identifican las capas en el panel Configurar capas. Estos difieren de un Id. de la capa en que se supone que sean un nombre intuitivo para identificar una capa para los usuarios finales del Visor, mientras que los ID están previstos únicamente para identificar una capa en la colección de capas del mapa desde una perspectiva programática. Se puede acceder al evento cambiado de la capa seleccionada a través de MapApplication.Current.SelectedLayerChanged. Los nombres de las capas se pueden recuperar y establecer por medio de los métodos MapApplication.Current.GetLayerName y MapApplication.Current.SetLayerName. El siguiente código muestra un comportamiento simple que muestra el nombre de la capa seleccionada en un cuadro de mensaje cuando cambia la capa seleccionada:

[Export(typeof(Behavior<Map>))]
[DisplayName("Show Selected Layer Name Behavior")]
[Category("My Behaviors")]
[Description("Shows a message box with the selected layer name")]
public class ShowSelectedLayerNameBehavior : Behavior<Map>
{
     protected override void OnAttached()
     {
          base.OnAttached();
 
          // Add a handler to the applications's SelectedLayerChanged event.
          MapApplication.Current.SelectedLayerChanged += ShowSelectedLayerName;
     }
 
     private void ShowSelectedLayerName(object s, EventArgs args)
     {
          // Show a message box with the selected layer name.
          string layerName = MapApplication.Current.SelectedLayer.GetValue(MapApplication.LayerNameProperty) as string;
          MapApplication.Current.ShowWindow("Layer Name", new TextBlock()
            {
                Text = layerName,
                TextWrapping = TextWrapping.Wrap,
                Margin = new Thickness(30),
                MaxWidth = 480
            });
     }
 
     protected override void OnDetaching()
     {
          // Remove the handler from the application's SelectedLayerChanged event.
          MapApplication.Current.SelectedLayerChanged -= ShowSelectedLayerName;
     }
}

1/23/2014