我在下面有这个jquery / javascript代码。它询问用户的位置权限,然后输出一个末尾附加了纬度的URL字符串。
我放了3个console.log状态网来强调问题,我得到当前输出。
预期的调试值(按顺序)
1_lat = 95.555555
2_lat = 95.555555
3_https://fcc-weather-api.glitch.me/api/current&安培; LAT = 95.555555
?
实际调试值:(按顺序)
2 _
3_https://fcc-weather-api.glitch.me/api/current&安培;
?1_lat = 95.555555
{{1}}
我一定不能理解javascript如何加载以及jQuery document.ready.function如何影响结果。
答案 0 :(得分:1)
navigator.geolocation
是异步的。因此,您必须等待navigator.geolocation.getCurrentPosition
回调函数才能处理lat
和lng
您可以这样做:
var curLat ='';
var curLon ='';
var weatherAPI='';
$(document).ready(function(){
if (navigator.geolocation){
navigator.geolocation.getCurrentPosition(function(position){
curLat = "lat=" + position.coords.latitude;
console.log("1_", curLat);
weatherAPI = getURL(curLat);
console.log("3_", weatherAPI);
});
}
});
function getURL(lat){
console.log("2_", lat);
var url = "https://fcc-weather-api.glitch.me/api/current?";
url = url + "&" + lat;
return url;
}
这将导致:
1_ lat=1.xxx
2_ lat=1.xxx
3_ https://fcc-weather-api.glitch.me/api/current?&lat=1.xxx