sabato 26 ottobre 2013

Silverlight GIS la gestione delle mappe tramite controllo Esri VB.Net e C# parte 4

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/tutorial-gis-silverlight/art_gestione-delle-mappe_1313.aspx

Introduzione

Continua lo studio sulla gestione delle mappe, in questa parte vedremo come integrare nella nostra mappa, la possibilità di visualizzare nella stessa la situazione dei terremoti nel mondo.
Utilizzeremo il servizio gratuito di esempio che mette a disposizione Esri, inoltre utilizzeremo il progetto precedente.

Configurazione della mappa

Aprite il progetto utilizzato nel precedente articolo, selezionate il controllo mappa e nella finestra delle proprietà facciamo click sul pulsante delle voce “Layers” come riportato in figura 1.


Figura 1 – la finestra delle proprietà

A questo punto si aprirà una finestra (figura 2) nella quale dobbiamo aggiungere l’elemento “ArcGisDynamicMapServiceLayer”  il quale ci permette di inserire una tipologia di mappa sovrapposta a quella che già stiamo utilizzando.
Dopo aver selezionato tale voce, facciamo click sul pulsante “Aggiungi” in modo che verrà inserito nella lista degli elementi tale voce.


Figura 2 – La finestra per impostare gli elementi di layers

Ora non ci resta che impostare la proprietà Url, questa voce, come vista nell’articolo precedente, ci permette di impostare il sito di riferimento per rilevare le mappe.
Nel nostro caso, essendo un tutorial, faremo uso del servizio di esempio, che è il seguente http://sampleserver3.arcgisonline.com “ in cui troviamo diverse mappe a disposizione.
Una volta fatto click sul pulsante, verrà aperta una finestra (Figura 3) a questo punto, nella casella “Service Broswer” dobbiamo inserire il seguente link http://sampleserver3.arcgisonline.com
E fare click sulla voce “Add Server”.


Figura 3 – La selezione della mappa dei terremoti


Dopo aver fatto click sul pulsante “Add Server” verranno visualizzate diverse catgorie, tra queste utilizzeremo una per la visualizzazione dei terremoti nel mondo.
Facciamo click sulla voce “Earhquakes” e tra le varie voci che vengono visualizzate fare clic sulla voce “EarthquakesFromLastSevenDays” il tutto come mostrato in figura 3.
Se facciamo click su tale voce, nella parte inferiore verrà visualizzata una mappa, mentre nella parte a sinistra una descrizione.
Dopo aver selezionato tale mappa, confermiamo il tutto tramite il pulsante “OK”.
Dopo aver confermato tutte le finestre, verrà visualizzata l’anteprima con i punti indicante i terremoti (figura 4).


Figura 4 – l’anteprima della nostra cartina



Siamo quasi giunti alla fine di questo articolo, dovremmo scrivere il codice, nell’eventualità che l’avvio non vada a buon fine.
Nella parte XAML o nella finestra delle proprietà, dovremmo gestire l’evento “InitializationFailed” per gli elementi ArcGISTiledMapServiceLayer e ArcGISDynamicMapServiceLayer.
Si riporta il codice XAML



<Grid x:Name="LayoutRoot" Background="White">
        <esri:Map Background="White" HorizontalAlignment="Left" Name="map1" VerticalAlignment="Top"   WrapAround="True" Height="288" Width="400" MouseMove="map1_MouseMove" IsLogoVisible="False">
            <esri:Map.Layers>
                <esri:LayerCollection>
                    <esri:ArcGISTiledMapServiceLayer Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" InitializationFailed="mappa_InitializationFailed" />
                    <esri:ArcGISDynamicMapServiceLayer Url="http://sampleserver3.arcgisonline.com:80/arcgis/rest/services/Earthquakes/EarthquakesFromLastSevenDays/MapServer" InitializationFailed="mappa_InitializationFailed" />
                </esri:LayerCollection>
            </esri:Map.Layers>
        </esri:Map>
        <StackPanel Height="69" HorizontalAlignment="Left" Margin="12,204,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="376">
            <sdk:Label Height="28" Name="lblScreenCoordinate" Width="364" />
            <sdk:Label Height="28" Name="lblMapCoordinate" Width="366" />
        </StackPanel>
    </Grid>





Mentre qui di seguito riportiamo il codice VB.Net e C# per la gestione dell'evento "InitializationFailed" da notare che per utilizzare la classe “Layer” dobbiamo aggiungere lo spazio dei nomi  “Imports ESRI.ArcGIS.Client”
Qui di seguito si riporta l’esempio per entrambi i linguaggi di programmazione.



VB.Net

Spazio dei nomi
Imports ESRI.ArcGIS.Client

Codice
Private Sub mappa_InitializationFailed(sender As System.Object, e As System.EventArgs)
        Dim layer As Layer = TryCast(sender, Layer)
        If layer.InitializationFailure IsNot Nothing Then
            MessageBox.Show(layer.ID & ":" & layer.InitializationFailure.ToString())
        End If

    End Sub

C#
Spazio dei nomi
using ESRI.ArcGIS.Client;

Codice
  private void mappa_InitializationFailed(object sender, EventArgs e)
        {
            Layer layer = sender as Layer;
            if (layer.InitializationFailure != null)
            {
                MessageBox.Show(layer.ID + ":" + layer.InitializationFailure.ToString());
            }

        }



L’oggetto Layer, permette di gestire le informazioni relative all’elemento che visualizza le informazioni, i due elementi visto nella finestra delle impostazioni.
Se la proprietà “InitializationFailure” è diverso da null, vuol dire che è stata sollevata un eccezione durante l’elaborazione della grafica e dei dati.

Conclusioni
L’articolo ha fornito le basi per utilizzare al meglio alcuni servizi web offerti da Esri per gestire il posizionamento di alcuni elementi (nel nostro caso terremoti) su una determinata carta.







Tutorial 3 parte http://emanuelemattei.blogspot.it/2013/10/tutorial-silverlight-gis-parte-3-la.html

Tutorial 2 parte http://emanuelemattei.blogspot.it/2013/10/tutorial-silverlight-e-gis-il-controllo.html
Tutorial 1 parte http://emanuelemattei.blogspot.it/2013/10/tutorial-silverlight-e-gis.html

Nessun commento: