因此,过去两个小时来我一直遇到这个问题。我正在尝试通过使用导航器对象来获取用户的位置,并且能够获取经度和纬度值,但是当我尝试返回它并将其用作Google Maps LatLng对象的变量时,它返回未定义。
这是代码:
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函数内部的第一个警报将显示正确的纬度,但是,函数外部的第二个警报显示为未定义。我如何才能在getCurrentPosition()函数外部正确显示该变量?
最佳答案
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
直到函数退出后才有机会执行和调用回调。