我试图将地理位置值存储在数组中,以便将纬度和经度存储为单独的变量,以便以后在代码中可以访问。
这个想法是将带有变量的数组存储在变量pos
下。但是,当我进行console.log记录时,我总是得到一个undefined
值。如果我在返回前使用console.log,则值实际上在那里。
想法?
function onPositionUpdate(position)
{
var lat = position.coords.latitude;
var lng = position.coords.longitude;
var latlng = [lat,lng];
return latlng;
}
var pos = navigator.geolocation.getCurrentPosition(onPositionUpdate);
console.log(pos);
答案 0 :(得分:0)
它不返回任何东西。而且是异步的。
OVER
您可以像这样使用它
let pos;
function onPositionUpdate(position) {
// async action goes second (not undefined)
const lat = position.coords.latitude;
const lng = position.coords.longitude;
pos = [lat,lng];
console.log(pos);
}
navigator.geolocation.getCurrentPosition(onPositionUpdate);
// there are no value yet (undefined)
console.log(pos);
const pingPos = setInterval(() => {
if (pos) {
clearInterval(pingPos);
console.log(pos); // not undefined
}
}, 100);
或者使用async / await或promises
const getPosition = (cb) => {
const onPositionUpdate = (position) => {
const lat = position.coords.latitude;
const lng = position.coords.longitude;
pos = [lat,lng];
cb.apply(null, pos)
}
navigator.geolocation.getCurrentPosition(onPositionUpdate);
}
// use it anywhere
getPosition((position) => {
console.log(position);
});