Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 2 - Geolokace podle IP adresy ve VB.NET - Dokončení

V minulé lekci, Geolokace podle IP adresy ve VB.NET - IPGeolocation, jsme zjistili veřejnou IP adresu uživatele a připravili vše potřebné pro zjištění GPS lokace podle této IP adresy.

V dnešním tutoriálu Síť ve VB.NET budeme pokračovat v aplikaci z lekce Geolokace podle IP adresy ve VB.NET WPF - IPGeolocation. Využijeme IP adresu pro určení polohy. Výsledkem budou GPS souřadnice - východní délku Longitude, severní šířku Latitude a další informace.

Inicializace balíčku IPGeolocation

Začneme přidáním importu nainstalovaného balíčku, pak inicializujeme API nainstalovaného balíčku a nakonec zavoláme metodu InitializeComponent() v konstruktoru Code Behind.

Import balíčku IPGeolocation

Nejprve si tedy mezi Imports příkazy, kódu na pozadí Code Behind, přidáme nainstalovaný balíček IPGeolocation z kapitoly Instalace NuGet balíčku IPGeolocation lekce Geolokace podle IP adresy ve VB.NET - IPGeolocation:

...
Imports IPGeolocation
...

Inicializace API balíčku IPGeolocation

Dále si v Code Behind inicializujeme API nainstalovaného balíčku IPGeolocation.

Pro inicializaci budeme potřebovat API klíč z účtu, který jsme si založili v kapitole Založení účtu u IPGeolocation lekce Geolokace podle IP adresy ve VB.NET WPF - IPGeolocation.

Instanci typu IPGeolocationAPI inicializujeme do proměnné api třídy MainWindow našeho okna:

Dim api As IPGeolocationAPI = New IPGeolocationAPI("Sem vložte svůj API_Key")

Konstruktor

V konstruktoru Code Behind zavoláme metodu InitializeComponent():

Public Sub New()
    InitializeComponent()
End Sub

Metody

V Code Behind si napíšeme metodu LocateIP() a IP_TBox_PreviewTextInput() a také přidáme dvě obslužné metody.

Metoda LocateIP()

Pro vyhledání polohy dle IP adresy si vytvoříme novou privátní metodu LocateIP() s parametrem IPAddress typu String:

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

Deklarujeme si instanci typu GeolocationParams do proměnné geoParams. Na instanci geoParams zavoláme metodu SetIPAddress(), které nastavíme IP adresu IPAddress. Dále metodou SetFields() upřesníme rozsah informací, které bude metoda zjišťovat. Využili jsme celkový rozsah možností tj. geo,time_zone,currency.

Pro zjištění pouze GPS souřadnic by stačilo zadat v parametru jen geo.

Následně zavoláme metodu GetGeolocation() a její návratovou hodnotu zpracujeme:

...
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())

Zde využíváme návratové hodnoty metody GetStatus(), která navrátí hodnotu 200, pokud se dohledání zdařilo. A využijeme listu City_ListV, abychom do něj vložili tyto výsledky:

  • název města,
  • název země,
  • místní měnu,
  • north latitude a east longitude.

Zbytek metody řeší jednak vypsání případné chyby, pokud se vyhledání IP adresy nezdařilo a také jednoduchý textový oddělovač pro přehlednost:

    ...
    Else
    City_ListV.Items.Add(geolocation.GetMessage())
    End If
    City_ListV.Items.Add("---------------------------------")
End Sub

Celá metoda LocateIP() vypadá následovně:

Private Sub LocateIP(IPAddress As String)
        Dim geoParams As GeolocationParams = New GeolocationParams()
        geoParams.SetIPAddress(IPAddress)
        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

Metoda IP_TBox_PreviewTextInput()

Nejprve si definujeme rozsah povolených znaků IP adresy, kterými jsou číslice a tečky. Poté v metodě ošetříme, aby textové pole IP_TBox mohlo obsahovat pouze tyto 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

Pro ošetření jsme využili regulární výraz a třídu Regex. Více informací jak regulární výrazy fungují najdeme v lekci Regulární výrazy v C# .NET - Úvod .

Obslužné metody

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

Obslužná metoda IP_button_Click()

V obslužné metodě, kterou přidělíme tlačítku Get IP, zavoláme naši metodu GetIP() pro zjištění IP adresy, kterou vrátíme do našeho textového pole IP_TBox:

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

Obslužná metoda Button_Click

Podobně v této obslužné metodě, kterou přidělíme tlačítku Get Position, zavoláme tentokrát naši metodu LocateIP() pro vyhledání polohy dle IP adresy:

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

Testování

Fungování aplikace vidíme na obrázku níže. Po kliknutí na Get IP se zjistí aktuální IP adresa. A následně po stisknutí tlačítka Get position se zjistí aktuální poloha dle IP adresy vepsané v textovém poli TextBox:

Ukázka funkční aplikace - Síť ve VB.NET

V příští lekci, Využití API ve VB.NET, si vyzkoušíme zavolat API server a zpracovat přijatá data.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 7x (779.17 kB)
Aplikace je včetně zdrojových kódů v jazyce VB.NET

 

Předchozí článek
Geolokace podle IP adresy ve VB.NET - IPGeolocation
Všechny články v sekci
Síť ve VB.NET
Přeskočit článek
(nedoporučujeme)
Využití API ve VB.NET
Článek pro vás napsal Dominik Horváth
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
Autor se věnuje programování v jazycích VB.NET a C#.
Aktivity