Ответ 1
Вам нужно добавить поставщика в модуль NgModule, то есть module.ts под провайдерами,
providers: [
Geolocation
]
Я пытаюсь использовать геолокацию в моем проекте ionic2 hello world, и я добавляю ионный плагин "Geolocation", следуя инструкциям на официальном сайте .
Я запустил эти две команды:
$ ionic plugin add cordova-plugin-geolocation
$ npm install --save @ionic-native/geolocation
И это мой home.ts:
import { Component } from '@angular/core';
import {Geolocation} from '@ionic-native/geolocation'
import { NavController } from 'ionic-angular';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
map:any=null;
geoInfo:any={
resp:'',
data:''
};
constructor(
public navCtrl: NavController,
private geolocation: Geolocation
) {
}
test(){
this.geolocation.getCurrentPosition().then((resp) => {
this.geoInfo.resp=JSON.stringify(resp);
// resp.coords.latitude
// resp.coords.longitude
}).catch((error) => {
console.log('Error getting location', error);
this.geoInfo.resp='Error getting location';
});
let watch = this.geolocation.watchPosition();
watch.subscribe((data) => {
this.geoInfo.data=JSON.stringify(data);
// data can be a set of coordinates, or an error (if an error occurred).
// data.coords.latitude
// data.coords.longitude
});
}
}
Однако в моей консоли Chrome я получил следующую ошибку:
EXCEPTION: Error in ./TabsPage class TabsPage - inline template:0:0 caused by: No provider for Geolocation!
error_handler.js:56ORIGINAL EXCEPTION: No provider for Geolocation!
Сначала я подумал, что это потому, что я отлаживался в браузере, но потом я получил ту же ошибку на своем телефоне Android.
Итак, что означает "Нет провайдера для геолокации" и как мне использовать геолокацию в моем проекте ionic2?
Спасибо большое!
Вам нужно добавить поставщика в модуль NgModule, то есть module.ts под провайдерами,
providers: [
Geolocation
]
Вам нужно импортировать класс Geolocation и добавить его в список поставщиков в файле app.module.ts.
import { Geolocation } from '@ionic-native/geolocation';
providers: [
Geolocation
]
который работал у меня, я импортировал его везде, но забыл добавить его к провайдерам на app.module.ts app.module.ts
import { Geolocation } from '@ionic-native/geolocation';
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler},
AuthService,
EmailValidator,
DataService,
Geolocation
]
то на странице я показывал lat и долго в этом примере в качестве тестового дома;
import { Geolocation } from '@ionic-native/geolocation';
lat: number;
longt: number;
this.geolocation.getCurrentPosition().then((resp) => {
this.lat = (resp.coords.latitude);
this.longt =(resp.coords.longitude);
}).catch((error) => {
console.log('Error getting location', error);
});
затем на home.html {{lat}} {{longt}}
Я знаю, что это было просто, но я просто извлекал данные, прежде чем переходить к их размещению на карте.
У меня была та же проблема, и я сталкиваюсь с этим, что мои родные плагины ядра не были в тех же версиях в моем package.json.
Вы можете проверить это решение и эту другую статью в следующих документах:
https://forum.ionicframework.com/t/cant-resolve-peer-dependencies-after-update/107224/2 https://blog.ionicframework.com/help-test-ionic-native-5/