使用javascript作为单独变量的地理位置经纬度

时间:2018-10-23 13:19:11

标签: javascript geolocation

我试图将地理位置值存储在数组中,以便将纬度和经度存储为单独的变量,以便以后在代码中可以访问。

这个想法是将带有变量的数组存储在变量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);

1 个答案:

答案 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);
});