2016-09-26 25 views
2

私はIonic2-Angular2-Typescriptアプリケーションを開発中です。 |プロパティ「コード」の地理位置」タイプに存在しません:cordova-plugin-geolocation watchPosition()メソッドが動作しません

エラーTS2339:私は、コルドバの位置情報機能に関するプラグインを使用しようとしているが、私はhttp://ionicframework.com/docs/v2/native/geolocation/エディタで同じようwatchPositionメソッドを呼び出すときは私にいくつかのエラーを示していPositionError '

エラーTS2339:プロパティ 'coords'がタイプ '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); 
}); 
} 

答えて

3

最後に、私は私の問題を解決:

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); 
    } 
}); 
0

方法だけでコールバック関数内部のタイプを設定することについてはどうですか?とにかくエラーに興味がないなら、より短いコードを作成します。このような

何か(テストしていません):

this.subscription = Geolocation.watchPosition() 
    .filter((p: any) => p['code'] === undefined) // Filter Out Errors 
    .subscribe((position: GeoPosition) => { 
     console.log(position.coords.longitude + ' ' + position.coords.latitude); 
    }); 
+0

私はなぜ知らないが、これは動作しません。私は最終的に私が答えをここに投稿して私の問題を解決しました。 positionがGeopositionかPositionError型かどうかをチェックします。 –

関連する問題