Как использовать Geo Location на каждой странице в Ionic 4 - PullRequest
0 голосов
/ 26 июня 2019

Я использую плагины GeoLocation NativeGeoCoder в ionic для получения.я хочу использовать местоположение на нескольких страницах.

я создаю функцию в app.component.ts

constructor(
    private geolocation: Geolocation,
    private nativegeocoder: NativeGeocoder
  ) {
    this.getGeoLocation();
  }

getGeoLocation() {
    const options: NativeGeocoderOptions = {
        useLocale: true,
        maxResults: 5
    };
    this.geolocation.getCurrentPosition().then((resp) => {
        console.log(resp);
        this.nativegeocoder.reverseGeocode(resp.coords.latitude, resp.coords.longitude, options)
        .then((result: NativeGeocoderResult[]) => {
            console.log(JSON.stringify(result[0]));
        }).catch((error) => console.log(error));
    }).catch((error) => {
        console.log(error);
    });
}

как использовать и вызывать функцию для обновления местоположения.

1 Ответ

5 голосов
/ 26 июня 2019

Вы должны использовать watchPosition вместо getCurrentPosition

Пожалуйста, создайте службу, как указано ниже эта служба имеет одну функцию и одну подлежит испусканиюобновленное значение местоположения через приложение, где бы мы ни подписывали эту тему.

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';

@Injectable()

export class Location {
  private _Location = new Subject<any>();

  getGeoLocation() {
    this.geolocation.watchPosition().subscribe((position) => {
      this._Location.next(position)
      console.log(position);
    }, (err) => {
      console.log(err);
    });
  }
}    

В файле ts компонента Вы должны внедрить сервис в конструктор.и после этого вы можете использовать функцию getGeoLocation для обновления местоположения и _Location для подписки на обновленное местоположение.

constructor(private locate: Location){}

ngOnInit() {
  // below code to take the updated snapshot of location
  this.locate.getGeoLocation()

  // below code to subscribe the updated location
  this.locate._Location.subscribe(location => {
    console.log(location);
  })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...