Ioni c Геолокация всегда попадает в ошибку метод - PullRequest
0 голосов
/ 29 мая 2020

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

Но проблема в том, что каждый раз, когда я пытаюсь, я попадаю в метод ошибки

import { LocationAccuracy } from '@ionic-native/location-accuracy/ngx';
import { Plugins } from '@capacitor/core';
const { Geolocation } = Plugins;

this.locationAccuracy.request(this.locationAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY).
then(() => {

      Geolocation.getCurrentPosition({ enableHighAccuracy: true }).then(loc => {

        alert('Position detected successfully' + loc);

      }).catch(error => {

        alert(error);

      });

    }).catch(deny => {

      alert('You denied the location');

    });

Но есть что-то очень странное, и это происходит непосредственно перед запуском приложения, если я запускаю карты Google и обнаруживаю себя , то мое приложение работает без каких-либо проблем, в противном случае оно продолжает попадать в метод ошибки.

1 Ответ

0 голосов
/ 30 мая 2020

Я не думаю, что вам нужна точность-местоположения-запроса-плагина-кордовы. Вот как вы получаете текущее местоположение с помощью Capacitor:

Класс страницы ( обновлен с обработкой ошибок ):

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

import { GeolocationPosition, Plugins } from '@capacitor/core';
const { Geolocation } = Plugins;

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})
export class HomePage {
  currentPos: GeolocationPosition;
  waitingForCurrentPosition = false;

  constructor() {
  }

  async getCurrentPos() {
    try {
      this.waitingForCurrentPosition = true;
      this.currentPos = await Geolocation.getCurrentPosition();
      console.log(this.currentPos);
    } catch (err) {
      console.error('Failed to get current position.', err);
    } finally {
      this.waitingForCurrentPosition = false;
    }
  }

}

Шаблон страницы:

<ion-header>
  <ion-toolbar>
    <ion-title>
      Capacitor Geolocation
    </ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>
  <ion-button (click)="getCurrentPos()" expand="block">
    <ion-spinner *ngIf="waitingForCurrentPosition"></ion-spinner>
    Get Current position
  </ion-button>

  <ul *ngIf="currentPos">
    <li>timestamp: {{ currentPos.timestamp }}</li>
    <li>coords:
      <ul>
        <li>latitude: {{ currentPos.coords.latitude }}</li>
        <li>longitude: {{ currentPos.coords.longitude }}</li>
        <li>accuracy: {{ currentPos.coords.accuracy }}</li>
        <li>altitudeAccuracy: {{ currentPos.coords.altitudeAccuracy }}</li>
        <li>altitude: {{ currentPos.coords.altitude }}</li>
        <li>speed: {{ currentPos.coords.speed }}</li>
        <li>heading: {{ currentPos.coords.heading }}</li>
      </ul>
    </li>
  </ul>
</ion-content>

Приложение запросит разрешения, когда вы попытаетесь получить позицию (нажмите кнопку).

Это работает на 2 тестовых устройствах:

  • OnePlus 6 (Android 10)
  • BlackView A60 (Android Go)

Я тестировал его раньше на iPhone 6S, поэтому он также должен работать для iOS.

Я создал демонстрацию basi c в этом репо .

...