我正在使用可以根据位置提供天气警报的 National Weather Service Alert API。很整洁的东西。我想缩小信息范围,仅根据用户地理位置进行拉取,这是一个可行的选择,并通过输入 html 地址并以 lat long 结束手动测试。我试图通过获取它们的位置并将其添加到返回并在 fetch 行中使用的字符串来自动化 html 构建过程。当我运行它时,控制台显示地址缺少 lat long。
除此之外,我没有尝试太多,因为我真的不知道另一种方法可以做到这一点。
函数加载警报(){
fetch(alertDataForUserLocation)
.then(response => response.json())
.then(data => {
console.log(data) // Prints result from `response.json()` in getRequest
})
.catch(error => console.error(error))
function alertDataForUserLocation() {
var lat = "";
var long = "";
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
alert("Geolocation needs to be enabled for this site.");
}
return "https://api.weather.gov/alerts/active?point=?" + lat + "," + long;
}
function showPosition(position) {
lat = position.coords.latitude;
long = position.coords.longitude;
}
我的逻辑告诉我 fetch 将调用函数 alertDataForUserLocation() ,该函数将提供一个正确的 html 地址,最后有一个 lat long 。这不是显示的内容。以下是我得到的错误。
api.weather.gov/alerts/active?point=?,:1 加载资源失败:服务器响应状态为 400 ()