martedì 9 ottobre 2018

.Net rilevare le coordinate GPS di un indirizzo VB.Net e C#

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/programmazione/art_net-rilevare-le-coordinate-gps-di-un-ind_1603.aspx


In questo articolo, vedremo come utilizzare le API di Google per ottenere le coordinate GPS di un indirizzo e visualizzare la mappa.
Riprendendo un articolo di qualche tempo fa, qui https://www.iprogrammatori.it/articoli/programmazione/art_net-rilevare-da-un-file-immagine-dati-gp_1441.aspx prenderemo in questo contesto come utilizzare le API di Google.

Creazione della finestra

Dopo aver creato un progetto di tipo “Windows Application” utilizzando il linguaggio di proprio interesse, aggiungiamo nella nostra form, un pulsante, e 5 controlli di tipo caselle di testo e controlli label, un controllo di tipo group box ed infine uno di tipo webbrowser il tutto come mostrato in figura 1


Figura 1 – La finestra con i vari controlli

I controlli di tipo caselle di testo, avranno il ruolo di contenere i dati per ottenere le coordinate, in particolare, indirizzo, cap e città, mentre due controlli conteranno le coordinate di tipo latitudine e longitudine.

Stesura di codice

Ora passiamo alla stesura del codice tramite i linguaggi di programmazione .Net più usati quali Visual Basic .Net e C#.
Prima di tutto bisogna aggiungere il riferimento allo spazio dei nomi per la gestione del web, questo ci serve per utilizzare le API di Google.
Prima di tutto, bisogna inserire in alto sopra ad ogni dichiarazione il riferimento al system.Net, qui di seguito le dichiarazioni delle suddette operazioni.



VB.Net

Imports System.Net

C#

using System.Net;

Ritorniamo nella parte visiva, nella nostra form e facciamo doppio click sul pulsante, nel quale andremo a scrivere il codice per la gestione delle API di google.
Nell’evento “click” scriviamo il codice per richiamare le API




VB.Net

Private Sub btnRileva_Click(sender As Object, e As EventArgs) Handles btnRileva.Click

        Dim indirizzoDaRilevare As String = (Uri.EscapeDataString(txtindirizzo.Text.ToLower().Replace(",", " ")) + ("," + (txtcitta.Text + (",Italia," + txtCap.Text))))

        Dim url As String = "http://maps.google.com/maps/api/geocode/xml?address={0}&sensor=false"

        url = String.Format(url, indirizzoDaRilevare)

        Dim request As WebRequest = WebRequest.Create(url)

        Using response As WebResponse = request.GetResponse()

 

            Dim xdocumentRisultato As XDocument = XDocument.Load(response.GetResponseStream())

            Dim result As XElement = xdocumentRisultato.Element("GeocodeResponse").Element("result")

            Dim locationElement As XElement = result.Element("geometry").Element("location")

            Dim lat As XElement = locationElement.Element("lat")

            Dim lng As XElement = locationElement.Element("lng")

            txtLatitudine.Text = lat.Value

            txtLongitudine.Text = lng.Value

            webBrowser1.Navigate(("http://maps.googleapis.com/maps/api/staticmap?center=" _

                            + (txtLatitudine.Text.Trim.Replace(",", ".") + ("," _

                            + (txtLongitudine.Text.Trim.Replace(",", ".") + "&zoom=15&size=200x200")))))

        End Using

    End Sub

C#

private void btnRileva_Click(object sender, EventArgs e)

        {

            string indirizzoDaRilevare = Uri.EscapeDataString(txtindirizzo.Text.Replace(",", " ")) + "," + txtcitta.Text + ",Italia," + txtCap.Text;

 

            //Rilevo da google le informazioni

            string url = "http://maps.google.com/maps/api/geocode/xml?address={0}&sensor=false";

            url = string.Format(url, indirizzoDaRilevare);

            WebRequest request = WebRequest.Create(url);

            using (WebResponse response = request.GetResponse())

            {

                XDocument xdocumentRisultato =  XDocument.Load(response.GetResponseStream());

 

                XElement result = xdocumentRisultato.Element("GeocodeResponse").Element("result");

                XElement locationElement = result.Element("geometry").Element("location");

                XElement lat = locationElement.Element("lat");

                XElement lng = locationElement.Element("lng");

                txtLatitudine.Text = lat.Value;

                txtLongitudine.Text = lng.Value;

 

            }

 

            webBrowser1.Navigate("http://maps.googleapis.com/maps/api/staticmap?center=" + txtLatitudine.Text.Trim().Replace(",", ".") + "," + txtLongitudine.Text.Trim().Replace(",", ".") + "&zoom=15&size=200x200");

 

        }






Come si è visto dal precedente esempio di codice, tramite la classe “WebRequest” andiamo ad eseguire le API di Google, per rilevare le coordinate GPS dall’indirizzo posto nelle varie caselle di testo, a questo punto, tramite le classi per la gestione dei file XML, in particolare la classe XDocument, Xelement, andiamo a rilevare i valori presenti nei nodi “Lat” e “Lng” che sono rispettivamente latitudine e longitudine.
Dopo aver rilevato i valori dal risultato andiamo ad impostare nel controllo webbrowser la mappa di google.

Conclusioni

L’articolo ha voluto fornire al lettore l’utilizzo delle API forniti dal sito “Google” per la gestione delle mappe, interessanti le funzionalità che si possono aggiungere alle nostre applicazioni, implementando e dotando le applicazioni con funzionalità di geo localizzazione ed altri interessanti aspetti. Sempre più servizi gratuiti online sono a disposizione dei vari sviluppatori, che in questi anni ha visto numerosi opportunità.

Nessun commento: