我试图将用户的当前位置放入一个对象变量,但它会自行对其进行重置。
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
最佳答案
当您尝试访问它时,它尚未填充。
showposition回调函数仅在浏览器获得坐标后(用户接受后)才运行
因此,使用UserCoords进行的任何函数调用都应在此之后调用。