Esri Maps for SharePoint inneholder et API (programmeringsgrensesnitt) for utvidbarhet som gir utviklere tilgang til kartet og det valgte laget, metoder for å vise grensesnittet (UI-et) i dialogbokser og muligheten til å lagre og laste inn konfigurasjonsdata. API-et for utvidbarhet følger med i ArcGIS Extensibility SDK for Silverlight. For å komme i gang må du først bestemme deg om du vil opprette et verktøy eller en virkemåte. Når du har bestemt deg for hva slags tilleggsprogram du vil opprette, kan du se det følgende avsnittet om å jobbe med kartet og det valgte laget for å få detaljert informasjon om hvordan du får tilgang til kartet fra tilleggsprogrammet.
Verktøy er en enkel måte å bringe logikk som skal startes av brukeren, til overflaten på. Hvis det virker fornuftig at funksjonaliteten du implementerer, skal startes av en bruker som klikker på en knapp på verktøylinjen, da bør du velge å innkapsle denne funksjonaliteten i et verktøy. Et identifiseringsverktøy er et eksempel på en situasjon der det ville vært best å lage en knapp på verktøylinjen for brukeren.
Kartvirkemåter gir deg en enkel måte å bringe funksjonalitet som alltid skal være aktivert, til overflaten på. Kartvirkemåter gir funksjonalitet der brukeren ikke trenger å gjøre noe. Hvis du utvikler funksjonalitet for å legge til en mulighet eller modifikasjon som alltid skal være der, da bør du innkapsle denne som en kartvirkemåte. Kartvirkemåter kan for eksempel brukes til å begrense kartets utstrekning, vise koordinater på musepekeren eller vise en innledende dialogboks når programmet lastes inn.
Se Skrive verktøy og Skrive virkemåter for kart hvis du vil ha mer informasjon og flere eksempler.
Du får tilgang til kartet og det valgte laget gjennom egenskaper i det statiske ESRI.ArcGIS.Client.Extensibility.MapApplication-objektet. MapApplication-objektet er tilgjengelig via MapApplication.Current-egenskapen. Bruk MapApplication.Current.Map i tilleggsprogramkoden for å få tilgang til kartobjektet. Bruk MapApplication.Current.SelectedLayer for å få tilgang til det valgte laget. Koden for den enkle kommandoen i emnet Skrive verktøy viser hvordan du får tilgang til kartet med CanExecute-metoden. Følgende kode viser et eksempel på en enkel kommando der det valgte lagets ID vises når verktøyet kjøres, og logikken i CanExecute-metoden er slik at verktøyet bare vil være aktivert hvis et GraphicsLayer (grafikklag) velges.[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;
}
[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;
}
}