Как я могу использовать плагин GeoLocation в Ionic 3? - PullRequest
0 голосов
/ 08 февраля 2019

У меня трудности с работой GeoLocation в Ionic 3. Я просмотрел несколько уроков и столкнулся с одной и той же проблемой со всеми из них.Вот мои настройки.

PS C:\> ionic info

cli packages: (C:\Users\myID\AppData\Roaming\npm\node_modules)

    @ionic/cli-utils  : 1.9.2
    ionic (Ionic CLI) : 3.9.2

global packages:

    Cordova CLI : 8.1.2 (cordova-lib@8.1.1)

local packages:

    @ionic/app-scripts : 3.1.0
    Cordova Platforms  : none
    Ionic Framework    : ionic-angular 3.9.2

System:

    Android SDK Tools : 26.1.1
    Node              : v8.10.0
    npm               : 5.6.0
    OS                : Windows 10

PS C:\>
PS C:\>
PS C:\>
PS C:\> ionic cordova plugin list
> cordova plugin ls
v Running command - done!
cordova-plugin-geolocation 4.0.1 "Geolocation"
PS C:\>
PS C:\>
PS C:\>

При настройке приложения hello-world / blank geo location я получаю ошибки, ссылающиеся на плагин GeoLocation.

// app.module.ts
import { Geolocation } from '@ionic-native/geolocation';
// ...
providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler},
    Geolocation  // <-- Errors here
  ]

Я могу обойти эту ошибкудобавив суффикс ngx:

// app.module.ts
import { Geolocation } from '@ionic-native/geolocation/ngx';
// ...
providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler},
    Geolocation  // OK now
  ]

Однако, когда я действительно использую его:

//home.ts
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Geolocation } from '@ionic-native/geolocation/ngx';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})

export class HomePage {

  lat: any;
  lng: any;

  constructor(public navCtrl: NavController,
    public geo: Geolocation) {
  }

  ionViewDidLoad() {
    this.geo.getCurrentPosition().then(pos => {
      this.lat = pos.coords.latitude;
      this.lng = pos.coords.longitude;
    }).catch(err => console.log(err));
  }

}

Я начинаю получать эту ошибку:

TypeError: Object(...) is not a function at Geolocation.getCurrentPosition

Комментированиевызов getCurrentPosition устраняет ошибку.

Что я пропустил?Я получил неправильную версию плагина?Есть ли способ узнать, какой из них работает с последней версией Ionic 3?

1 Ответ

0 голосов
/ 09 февраля 2019

Вы установили плагин Geolocation v3?Как вы можете видеть здесь , команда выглядит так:

$ ionic cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="To locate you"
$ npm install --save @ionic-native/geolocation@4

После установки вы должны импортировать плагин в app.module , а также в ваш home.ts

import { Geolocation } from '@ionic-native/geolocation';

Код для использования плагина правильный, поэтому вам не нужно его менять.

this.geo.getCurrentPosition().then(pos => {
   this.lat = pos.coords.latitude;
   this.lng = pos.coords.longitude;
}).catch(err => console.log(err));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...