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