我有一个JS Widget,用于从列表中计算出用户当前位置的最近位置(使用lat / long)。
首先,我使用_create()
方法尝试通过调用setLocation()
方法设置用户位置,然后在继续之前检查坐标是否成功设置。这是setLocation()
方法,它不会产生任何错误,但不会导致我的检查超出上述检查范围(if(typeof(this.coords) != 'undefined')
) -
/**
* Set the users current loction (latitude and longitude)
*/
setLocation : function(){
var t = this; // This object
if(navigator.geolocation){ // Ensure that the users location is available
navigator.geolocation.getCurrentPosition(function(position){ // Set the users current location within this object
t.coords = {
latitude: position.coords.latitude,
longitude: position.coords.longitude
};
});
}
}, // getLocation
但奇怪的是,当我console.log(this)
时,this.coords
被正确设置为对象。但是,console.log(this.coords)
会导致输出 undefined 。
是否有人能够帮助我理解为什么会出现这种情况?
我已在此pastebin中列出了我的完整代码,此处的示例是您如何测试代码 -
$('#closest').closest({
stations: new Array(
{
"name": "Exeter St David's",
"code": "EXD",
"link": "neveryoumindEXD.html",
"latitude": "50.729342",
"longitude": "-3.543290"
},
{
"name": "Swindon (Wilts)",
"code": "SWI",
"link": "neveryoumindSWI.html",
"latitude": "51.566828",
"longitude": "-1.785450"
}
)
});