我无法弄清楚为什么我会得到这个结果,我从来没有能够掌握JavaScript,因为我总是被代码行为的不稳定性所吓倒到Python或Java。
我需要将变量lng_
设置为当前经度,一旦我弄明白,我将对lat_
执行相同操作。这是我的代码:
var lng_ = navigator.geolocation.getCurrentPosition(GetLong);
var lat_ = navigator.geolocation.getCurrentPosition(GetLat);
function GetLong(location)
{
console.log(location.coords.longitude);
var ret = location.coords.longitude;
return ret;
}
console.log(lng_);
function GetLat(location)
{
return(location.coords.latitude);
}
如果您查看function GetLong(location)
,它应该返回经度值并包含一个JavaScript日志以显示它是否有效。
根据我的JavaScript日志,我得到了正确的结果
-122.15616500000002
但是当我将此值存储在ret
并将其返回时,最终的console.log()
会出现undefined
JavaScript如何知道它返回的是什么类型的对象,无论它是字符串还是int?什么是我的问题的解决方案?
答案 0 :(得分:2)
您只需使用回调函数调用getCurrentPosition()
一次,它在调用时实际上不会返回该位置;这样做的原因是该职位不会立即可用:
function getPosition(location)
{
var lng_, lat_;
lng_ = location.coords.longitude;
lat_ = location.coords.latitude;
// do stuff with position here
}
navigator.geolocation.getCurrentPosition(GetPosition);
它与其他异步操作在JavaScript中的工作方式非常相似。