V predchádzajúcom článku je popísanie implementácie geolokačného pluginu Cordova do Ionic (ver.5) aplikácie.
Teraz popíšem malú úpravu - presunutie tejto funkcionality z konkrétnej stránky do servisu. Výhodou je samozrejme to, že ak potrebujeme zisťovať GPS polohu cez tento Cordova plugin z viacerých stránok aplikácie, nie je potrebné opakovať tento kód v každej z týchto stránok, ale iba urobiť volanie funkcie zo servisu.
Inštalácia knižníc a plugin-ov je rovnaká (ak to ešte nemáme v aplikácii, projekte nainštalované) ako je popísané v predchádzajúcom článku.
Takisto je potrebné, rovnako - doplniť potrebnú referenciu a provider aj do súboru "app.module.ts".
Zmena prichádza až v tomto bode.
Ak už mám vytvorený v aplikácii nejaký servis použijem ho (ak nie vytvorím si servis nový, viď napr.článok).
V súbore tohto servisu doplniť nasledujúci kód:
... import { Geolocation } from '@ionic-native/geolocation/ngx'; locationCordinates = Array(); ... constructor( ... private geolocation: Geolocation ) { } // zisti aktualnu polohu (pomocou cordova geolocation pluginu): async getUserCoordinates() { await this.geolocation.getCurrentPosition().then( (resp) => { // naplni pole hodnot, ktore bude odovzdavat naspat: this.locationCordinates.push(resp.coords['latitude']); this.locationCordinates.push(resp.coords['longitude']); } ).catch( (error) => { console.log('Error getting location', error); } ); return this.locationCordinates; } ...
a na stránke, kde chceme využiť túto funkcionalitu, napr.na stránke "home", tj.v súbore "home.page.ts" je potrebné doplniť:
... import { PozadovanyService } from 'src/app/services/weather.service'; ... export class HomePage implements OnInit { locationCordinates: any; latCoords: number = 48.659052; // default-na hodnota GPS latitude: Bohdanovce 369 lngCoords: number = 21.399222; // default-na hodnota GPS longitude: Bohdanovce 369 pageContent = null; ... constructor( private weatherService: WeatherService, ) {} // inicializacia stranky: ngOnInit() { this.getLocation(); } // tlacitko [Get location] - zisti aktualnu polohu pouzivatela (cez servis): getLocation() { this.locationCordinates = this.weatherService.getUserCoordinates().then( (result) => { // console.log('getLocation: result: '+result); this.latCoords = result[0]; this.lngCoords = result[1]; console.log('getLocation: lat/lng: '+this.latCoords+'/'+this.lngCoords); } ).catch( (error) => { console.log('Error getting location', error); } ); } ...
Funkcionalita je vykonaná s načítaním (inicializáciou stránky), ale tiež je možné túto funkciu "getLocation()" volať aj pri stisnutí tlačítka na stránke (tj."home.page.html" mám niekde definované tlačítko):
... <ion-button color="primary" shape="round" (click)="getLocation()">Get location</ion-button>
...
Top comments (0)