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)