Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

2. diel - Geolokácia podľa IP adresy vo VB.NET WPF - Dokončenie

V minulej lekcii, Geolokácia podľa IP adresy vo VB.NET WPF - IPGeolocation , sme zistili verejnú IP adresu užívateľa a pripravili všetko potrebné na zistenie GPS lokácie podľa tejto IP adresy.

V dnešnom VB.NET WPF tutoriále budeme pokračovať v aplikácii z lekcie Geolokácie podľa IP adresy vo VB.NET WPF-IPGeolocation. Využijeme IP adresu pre určenie polohy. Výsledkom budú GPS súradnice, Longitude a Latitude a ďalšie informácie.

Inicializácia balíčka IPGeolocation

Začneme pridaním importu nainštalovaného balíčka, potom inicializujeme API nainštalovaného balíčka a nakoniec zavoláme metódu InitializeComponent() v konštruktore Code Behind.

Import IPGeolocation

Najprv si teda medzi Imports príkazy, kódu na pozadí Code Behind, pridáme nainštalovaný balíček IPGeolocation z kapitoly Inštalácia NuGet balíčka IPGeolocation lekcie Geolokácia podľa IP adresy vo VB.NET WPF - IPGeolocation.

Inicializácia API balíčka IPGeolocation

Ďalej si v Code Behind inicializujeme API nainštalovaného balíčka IPGeolocation.

Pre inicializáciu budeme potrebovať API kľúč z účtu, ktorý sme si založili v kapitole Založenie účtu pri IPGeolocation lekcie Geolokácie podľa IP adresy vo VB.NET WPF - IPGeolocation.

Inštanciu typu IPGeolocationAPI inicializujeme do premennej api triedy nášho okna:

Dim api As IPGeolocationAPI = New IPGeolocationAPI("Sem_vlozte_svuj_API_Key")

Konštruktor

V konštruktore zavoláme metódu InitializeComponent():

Public Sub New()
    InitializeComponent()
End Sub

Metódy

V Code Behind si napíšeme metódu LokaceIP() a IP_TBox_PreviewTextInput(), a tiež pridáme dve obslužné metódy.

Metóda LokaceIP()

Pre vyhľadanie polohy podľa IP adresy si vytvoríme novú privátnu metódu LokaceIP() s parametrom IPadress typu String:

Private Sub LokaceIP(IPadress As String)
    Dim geoParams As GeolocationParams = New GeolocationParams()
    geoParams.SetIPAddress(IPadress)
    geoParams.SetFields("geo,time_zone,currency")

Deklarujeme si inštanciu typu GeolocationParams do premennej geoParams. Na inštancii geoParams zavoláme metódu SetIPAddress(), ktoré nastavíme IP adresu IPadress. Ďalej metódou SetFields() upresníme rozsah informácií, ktoré bude metóda zisťovať. Využili sme celkový rozsah možností tj geo,time_zone,currency.

Pre čisto zistenie GPS súradníc by stačilo zadať v parametri len geo.

Následne zavoláme metódu GetGeolocation() a jej návratovú hodnotu spracujeme:

...
Dim geolocation As Geolocation = api.GetGeolocation(geoParams)
If geolocation.GetStatus() = 200 Then
    City_ListV.Items.Add(geolocation.GetCity())
    City_ListV.Items.Add(geolocation.GetCountryName())
    City_ListV.Items.Add(geolocation.GetCurrency().GetName())
    City_ListV.Items.Add("Lat: " & geolocation.GetLatitude().ToString() & "; Long: " + geolocation.GetLongitude().ToString())

Tu využívame návratové hodnoty metódy GetStatus(), ktorá vráti hodnotu 200, pokiaľ sa vyhľadanie podarilo. A využijeme listu City_ListV, aby sme doň vložili tieto výsledky:

  • názov mesta,
  • názov krajiny,
  • miestnu menu,
  • Latitude a Longitude, teda GPS súradnice, ktoré hľadáme.
Zvyšok metódy rieši jednak vypísanie prípadnej chyby, pokiaľ sa vyhľadanie IP adresy nepodarilo, a tiež jednoduchý textový oddeľovač pre prehľadnosť:
    Else
        City_ListV.Items.Add(geolocation.GetMessage())
    End If
    City_ListV.Items.Add("---------------------------------")
End Sub

Celá metóda LokaceIP() vyzerá nasledovne:

Private Sub LokaceIP(IPadress As String)
        Dim geoParams As GeolocationParams = New GeolocationParams()
        geoParams.SetIPAddress(IPadress)
        geoParams.SetFields("geo,time_zone,currency")
        Dim geolocation As Geolocation = api.GetGeolocation(geoParams)


        If geolocation.GetStatus() = 200 Then
            City_ListV.Items.Add(geolocation.GetCity())
            City_ListV.Items.Add(geolocation.GetCountryName())
            City_ListV.Items.Add(geolocation.GetCurrency().GetName())
            City_ListV.Items.Add("Lat: " & geolocation.GetLatitude().ToString() & "; Long: " + geolocation.GetLongitude().ToString())
        Else
            City_ListV.Items.Add(geolocation.GetMessage())
        End If
        City_ListV.Items.Add("---------------------------------")
End Sub

Metóda IP_TBox_PreviewTextInput()

Najprv si definujeme rozsah povolených znakov IP adresy, ktorými sú číslice a bodky. Potom v metóde ošetríme, aby textové pole IP_TBox mohlo obsahovať iba tieto povolené znaky:

Private Shared ReadOnly regex As Regex = New Regex("^[.0-9]+$")
Private Sub IP_TBox_PreviewTextInput(sender As Object, e As TextCompositionEventArgs)
    If Not regex.IsMatch(e.Text) Then
        e.Handled = True
    End If
    MyBase.OnPreviewTextInput(e)
End Sub

Na ošetrenie sme využili regulárny výraz a triedu Regex. Viac informácií ako regulárne výrazy fungujú nájdeme v lekcii Regulárne výrazy v C# .NET - Úvod.

Obslužné metódy

Do Code Behind si dopíšeme obslužné metódy IP_button_Click() a Button_Click().

Ovládacia metóda IP_button_Click()

V obslužnej metóde, ktorú pridelíme tlačidlu Get IP, zavoláme našu metódu GetIP() pre zistenie IP adresy, ktorú vrátime do nášho textového poľa IP_TBox:

Private Sub IP_button_Click(sender As Object, e As RoutedEventArgs)
    IP_TBox.Text = GetIP()
End Sub

Obslužná metóda Button_Click

Podobne v tejto obslužnej metóde, ktorú pridelíme tlačidlu Get Position, zavoláme tentoraz našu metódu LokaceIP() pre vyhľadanie polohy podľa IP adresy:

Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
    LokaceIP(IP_TBox.Text)
End Sub

Testovanie

Fungovanie aplikácie vidíme na obrázku nižšie. Po kliknutí na Get IP sa zistí aktuálna IP adresa. A následne po stlačení tlačidla Get position sa zistí aktuálna poloha podľa IP adresy vpísanej v textovom poli TextBox:

Ukážka funkčnej aplikácie - Sieť vo VB .NET

V budúcej lekcii, Využitie API vo VB.NET , si vyskúšame zavolať API server a spracovať prijaté dáta.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 7x (779.17 kB)
Aplikácia je vrátane zdrojových kódov v jazyku VB.NET

 

Predchádzajúci článok
Geolokácia podľa IP adresy vo VB.NET WPF - IPGeolocation
Všetky články v sekcii
Sieť vo VB .NET
Preskočiť článok
(neodporúčame)
Využitie API vo VB.NET
Článok pre vás napísal Dominik Horváth
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje programování v jazycích VB.NET a C#.
Aktivity