2016-09-26 2 views
2

Ionic2-Angular2-Typescript 응용 프로그램에서 작업하고 있습니다. | 속성 '코드'Geoposition '유형에 존재하지 않습니다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

나는 이유를 알고하지 않습니다하지만이 작동하지 않습니다. 나는 대답을 게시하면서 마침내 문제를 해결했다. 위치가 Geoposition 또는 PositionError 유형인지 확인합니다. –

관련 문제