geolocation将变量设置为当前位置

时间:2015-08-06 14:20:28

标签: javascript html5 geolocation

我试图将用户的当前位置变为对象变量,但它会自动重置。

var UserCoords = { lat: '', lng: '' };
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);

    } else {
        alert("Geolocation is not supported by this browser.");
    }
}

function showPosition(position) {
    UserCoords.lat = position.coords.latitude;
    UserCoords.lng = position.coords.longitude;
    console.log(UserCoords);//Works
}

function getUserCoords() {
    getLocation();
    console.log(UserCoords);//Returns lat and lng empty
    OtherFunction(UserCoords.lat, UserCoords.lng);
}

我也尝试过:

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function (position) {
            UserCoords.lat = position.coords.latitude;
            UserCoords.lng = position.coords.longitude;
            console.log(UserCoords);//Works
        });
}

但两者都不起作用。

我想这样做,因为我需要在其他一些功能中使用用户位置,我不想每次都调用地理位置。

更新

jsfiddle:http://jsfiddle.net/9fvcqcvz

1 个答案:

答案 0 :(得分:0)

当您尝试访问它时,它尚未填充。 showposition回调函数只有在浏览器获取coords后才会运行(在用户接受之后) 因此,应该在此之后调用UserCoords的任何函数调用。