2017-07-18 59 views
0

我得到用户的地理位置使用谷歌地图API,检索经纬度& lng信息。我想将lat,lng传递给web api服务并获取周围地址的json输出。为了从web api服务获取数据,我使用了可以正常工作的angular2代码。获取地理位置和订阅服务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

我相信你应该把你所有的逻辑放在getCurrentPosition()的回调函数中。事实上,HTML5的地理定位是异步的,所以看起来像你试图在回调发生之前检索latlng

试试这个

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