2017-02-10 44 views
1

在休耕代碼我想拖標記LatLng傳遞到一個函數來獲取地址,但它不工作如何通過標記的新位置爲功能

public LastLat : any; 
public LastLng : any; 

。 。 。

lastLatLng(marker){ 
    google.maps.event.addListener(marker, 'dragend', function() { 
    this.LastLat= marker.position.lat(); 
    this.LastLng= marker.position.lng(); 
    }); 

console.log(this.LastLat,this.LastLng); 

     this.Getaddress(this.LastLat,this.LastLng); 

} 

Getaddress(LastLat, LastLng){ 
this.http.get('http://nominatim.openstreetmap.org/reverse?format=json&lat='+LastLat+ '&lon='+LastLng + '&zoom=18&addressdetails=1') 
     .map(res => res.json()) 
     .subscribe(data => { 
     this.data = data.display_name; 
     console.log(this.data); 
}); 
} 
運行時,它

說LastLat,LastLng不確定的。 Getaddress失敗,因爲this.LastLat,this.LastLng也沒有數據console.log。

回答

1

你應該移動呼叫到的getAddress事件監聽器:

lastLatLng(marker){ 
    google.maps.event.addListener(marker, 'dragend',() => { 
     this.LastLat= marker.position.lat(); 
     this.LastLng= marker.position.lng(); 
     console.log(this.LastLat,this.LastLng); 
     this.Getaddress(this.LastLat,this.LastLng); 
    }); 
} 
+0

我已經試過,但顯示錯誤:'運行時錯誤 this.Getaddress不是function' – RSA

+0

正確的。在事件處理程序中,'this'不指向您的組件,這就是它失敗的原因。你應該使用lambda來保存'this'而不是普通的函數。我已經更新了我的答案。 –

+0

謝謝,這工作正常,請你給我指導如何編寫函數來返回或操作公共變量。 – RSA