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.
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:

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
