我使用google map api获取用户的geoLocation,检索lat&信息我想将lat,lng传递给web api服务并获取周围地址的json输出。为了从web api服务获取数据,我使用的angular2代码工作正常。
以下是详细信息的代码:
data.service.ts file:
fetchData(lat: number, lng: number) {
return this._http.get('/url?lat=' + lat + '&lon=' + lng)
.map((response: Response) => response.json());
}
app.component.ts
ngOnInit(){
var lat;
var lng;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
lat = position.coords.latitude;
lng = position.coords.longitude;
});
if ((lat != null) && (lng != null)) {
this._dataService.fetchData(lat, lng).subscribe(res => {
this.dObj = res;
});
}
}
上述代码不起作用。我试着玩代码。 fetchData()之前被调用(我相信,因为它的异步),不知怎的,我无法将lat,lng传递给服务。
有没有正确的方法来实现这一目标?有什么其他方法可以做到这一点?是否有任何angular2库可以使用类似的东西?请帮忙
答案 0 :(得分:0)
我相信你应该将所有逻辑放在getCurrentPosition()
的回调函数中。实际上HTML5地理位置是异步的,所以看起来你试图在回调发生之前检索lat
和lng
。
试试这个
var lat;
var lng;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition( position => {
lat = position.coords.latitude;
lng = position.coords.longitude;
if ((lat != null) && (lng != null)) {
this._dataService.fetchData(lat, lng).subscribe(res => {
this.dObj = res;
});
}
});
}