我是 javascript 新手,我正在尝试构建一个网站,该网站在用户区域显示温度,但是我的la
和lg
变量在我的showPosition()
函数之外未定义,因此我无法成功调用 API 来获取天气。
这是完整的代码:
var la;
var lg;
function getLocation() {
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(showPosition);
}
function showPosition(position) {
la= position.coords.latitude;
lg= position.coords.longitude;
}
getLocation();
var url="https://fcc-weather-api.glitch.me/api/current?lat=" + la + "&lon=" + lg;
document.getElementById("im").innerHTML="Latitude:" + la;
fetch(url)
.then((resp) => resp.json())
.then(function(data) {
document.getElementById("temper").innerHTML="Temperature:" + data.main.temp;
})
.catch(function(error) {
console.log("error: " + error);
});
我决定测试我的la
和lg
变量是否正确document.getElementById("im").innerHTML="Latitude:" + la
,但我得到Latitude:undefined
. 我在showPosition()
函数内部进行了相同的测试,并且正确定义了变量。我该如何解决这个问题?
问题是它showPosition
不会立即被调用(例如初始化 GPS 需要一些时间)。因此,您必须等待您的请求,直到收到您的位置数据:
var la;
var lg;
function getLocation() {
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(showPosition);
}
function showPosition(position) {
la = position.coords.latitude;
lg = position.coords.longitude;
var url="https://fcc-weather-api.glitch.me/api/current?lat=" + la + "&lon=" + lg;
document.getElementById("im").innerHTML="Latitude:" + la;
fetch(url)
.then((resp) => resp.json())
.then(function(data) {
document.getElementById("temper").innerHTML="Temperature:" + data.main.temp;
})
.catch(function(error) {
console.log("error: " + error);
});
}
getLocation();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句