如何在局部变量中保存地理位置详细信息以供以后使用

How to save geolocation details in local variables to use it later

我对 Nativescript 非常陌生(anngular2/typescript)。我的用例是使用 nativescript 地理定位插件跟踪用户位置并保存结果(例如纬度和经度)以备后用。下面是我的示例代码:

export class AppComponent {
    public latitude: number;
    public longitude: number;

 public constructor() 
 {
      this.updateLocation();
      this.getWeather(this.latitude ,this.longitude);
 }

private getDeviceLocation(): Promise<any> {
        return new Promise((resolve, reject) => {
            geolocation.enableLocationRequest().then(() => {
                geolocation.getCurrentLocation({desiredAccuracy:3,updateDistance:10,timeout: 20000}).then(location => {
                    resolve(location);

                }).catch(error => {
                    reject(error);
                });
            });
        });
    }

 public updateLocation() {
        this.getDeviceLocation().then(result => {
// i am saving data here for later usage 
            this.latitude = result.latitude;
            this.longitude = result.longitude;
        }, error => {
            console.error(error);
        });
    }

public getWeather(latitude:number,longitude:number){
// do stuff with lat and long 
}
}

但是我无法将纬度和经度的值传递给 getWeather method.It 因为 undefined.What 我做错了吗?我知道解决方法:通过在这些值可用的 updateLocation 内部直接调用 getWeather 并使它正常工作,但不知何故我觉得它不是一个合适的 way.Thanks 提前。

你认为的"not an appropriate way"其实是合适的方式;您的 this.updateLocation() 函数是异步的(Promise),因此下面的行 (this.getWeather(this.latitude ,this.longitude)) 在 this.latitudethis.longitude 初始化之前运行。

您需要在初始化时调用 getWeather,这正是 updateLocation..

中的 Promise returns 的时间