2017-07-18 67 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; 
      }); 
     } 
    }); 
}