cordova-plugin-geolocation watchPosition() 方法不起作用
cordova-plugin-geolocation watchPosition() method not working
我正在开发 Ionic2-Angular2-Typescript 应用程序。我正在尝试使用 Cordova 的 Geolocation 插件,但是当我调用 http://ionicframework.com/docs/v2/native/geolocation/ 中的 watchPosition 方法时,编辑器向我显示了一些错误:
Error TS2339: Property 'code' does not exist on type 'Geoposition | PositionError'.
Error TS2339: Property 'coords' does not exist on type 'Geoposition | PositionError'.
这是我的代码:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs';
import { Observable } from 'rxjs/Observable';
import { Geolocation, PositionError, Geoposition } from 'ionic-native';
export class LocationProvider {
constructor(private http: Http) {}
var subscription = Geolocation.watchPosition()
.filter((p) => p.code === undefined) //Filter Out Errors
.subscribe(position => {
console.log(position.coords.longitude + ' ' + position.coords.latitude);
});
}
最后,我解决了我的问题如下:
this.subscription = Geolocation.watchPosition().subscribe(position => {
if ((position as Geoposition).coords != undefined) {
var geoposition = (position as Geoposition);
console.log('Latitude: ' + geoposition.coords.latitude + ' - Longitude: ' + geoposition.coords.longitude);
} else {
var positionError = (position as PositionError);
console.log('Error ' + positionError.code + ': ' + positionError.message);
}
});
在回调函数中设置一个类型怎么样?如果您对错误不感兴趣,可以使用更短的代码。
类似这样的东西(未测试):
this.subscription = Geolocation.watchPosition()
.filter((p: any) => p['code'] === undefined) // Filter Out Errors
.subscribe((position: GeoPosition) => {
console.log(position.coords.longitude + ' ' + position.coords.latitude);
});
我正在开发 Ionic2-Angular2-Typescript 应用程序。我正在尝试使用 Cordova 的 Geolocation 插件,但是当我调用 http://ionicframework.com/docs/v2/native/geolocation/ 中的 watchPosition 方法时,编辑器向我显示了一些错误:
Error TS2339: Property 'code' does not exist on type 'Geoposition | PositionError'.
Error TS2339: Property 'coords' does not exist on type 'Geoposition | PositionError'.
这是我的代码:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs';
import { Observable } from 'rxjs/Observable';
import { Geolocation, PositionError, Geoposition } from 'ionic-native';
export class LocationProvider {
constructor(private http: Http) {}
var subscription = Geolocation.watchPosition()
.filter((p) => p.code === undefined) //Filter Out Errors
.subscribe(position => {
console.log(position.coords.longitude + ' ' + position.coords.latitude);
});
}
最后,我解决了我的问题如下:
this.subscription = Geolocation.watchPosition().subscribe(position => {
if ((position as Geoposition).coords != undefined) {
var geoposition = (position as Geoposition);
console.log('Latitude: ' + geoposition.coords.latitude + ' - Longitude: ' + geoposition.coords.longitude);
} else {
var positionError = (position as PositionError);
console.log('Error ' + positionError.code + ': ' + positionError.message);
}
});
在回调函数中设置一个类型怎么样?如果您对错误不感兴趣,可以使用更短的代码。
类似这样的东西(未测试):
this.subscription = Geolocation.watchPosition()
.filter((p: any) => p['code'] === undefined) // Filter Out Errors
.subscribe((position: GeoPosition) => {
console.log(position.coords.longitude + ' ' + position.coords.latitude);
});