Иони c 5 Конденсатор Android не показывает результаты геолокации - PullRequest
1 голос
/ 18 марта 2020

У меня есть приложение Ioni c 5 / Capacitor, и я использую геолокацию.

Вот код:

import { Component } from '@angular/core';
import { Geolocation } from '@capacitor/core';


@Component({
  selector: 'app-tab1',
  templateUrl: 'tab1.page.html',
  styleUrls: ['tab1.page.scss']
})
export class Tab1Page {

  latitude: number;
  longitude: number;

  constructor() {
    this.getLocation();
  }

  async getLocation() {
    const position = await Geolocation.getCurrentPosition({ enableHighAccuracy: true, timeout: 5000, maximumAge: 0 });
    this.latitude = position.coords.latitude;
    this.longitude = position.coords.longitude;
  }

}

Когда я запускаю его в своем браузере это. широта и this.longitude показывает результаты, но когда я запускаю его на Android Studio либо на эмуляторе, либо на телефоне, он не показывает результатов вообще.

Как я могу исправить эту проблему, поскольку она не дает мне ошибок, это просто не возвращаю GPS-координаты на моем Android телефоне или эмуляторе.

1 Ответ

0 голосов
/ 18 марта 2020

Попробуйте это:

constructor(public geoLoc: GeoLocation){}

async getLocation() {
    const position = await this.geoLoc.getCurrentPosition({enableHighAccuracy: true, timeout: 5000, maximumAge: 0}).then(res => {
        this.latitude = res.coords.latitude;
        this.longitude = res.coords.longitude; 
    }   
});

Я думаю, что происходит, ваш браузер уже имеет местоположение, но на телефоне вы должны ждать его, чтобы получить местоположение, поэтому вы должны использовать promise возвращается из метода getCurrentPosition(). Кроме того, в зависимости от того, как вы используете getLocation(), вы также можете захотеть, чтобы он возвращал promise, когда promise, возвращенное из getCurrentPosition(), выполнено, в противном случае this.latitude и this.longitude, вероятно, все еще будут null.

...