所以过去几个小时我一直在讨论这个问题。我试图通过使用导航器对象获取用户的位置,并且我能够得到lat和long就好了,但是当我尝试返回它并将其用作Google Maps LatLng对象的变量时,它返回为undefined。
以下是代码:
function getCurrentLat(){
var lat
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function(position) {
lat = position.coords.latitude;
alert(lat);
});
alert(lat);
}else{
console.log("Unable to access your geolocation");
}
return lat;
}
getCurrentPosition函数中的第一个警报将显示正确的纬度,但是,函数外的第二个警告显示为undefined。如何在getCurrentPosition()函数之外正确显示变量?
答案 0 :(得分:0)
getCurrentPosition
接受回调,并且在该函数中,您最终会得到不同的内部范围(并且可能不会立即执行)。因此,唯一可以做到这一点的方法是返回未来或接受回调,例如:
function getCurrentLat(callback){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function(position) {
callback(position.coords.latitude);
});
}else{
console.log("Unable to access your geolocation");
}
}
否则,很明显为什么lat
未定义,因为getCurrentPosition
甚至没有机会执行并在函数退出之前调用回调。