如何在局部变量中保存地理位置详细信息以供以后使用
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.latitude
和 this.longitude
初始化之前运行。
您需要在初始化时调用 getWeather
,这正是 updateLocation
..
中的 Promise returns 的时间
我对 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.latitude
和 this.longitude
初始化之前运行。
您需要在初始化时调用 getWeather
,这正是 updateLocation
..