feat: 优化页面效果
This commit is contained in:
parent
0d88e161d9
commit
94b91c1290
@ -2320,7 +2320,7 @@
|
||||
|
||||
function showWeatherForecast(deviceInfo) {
|
||||
currentWeatherDevice = deviceInfo;
|
||||
currentForecastIndex = 0;
|
||||
// 不在这里设置currentForecastIndex,让fetchWeatherData自动选择最近的时间点
|
||||
weatherData = null;
|
||||
|
||||
var role = /*[[${role}]]*/ 'USER';
|
||||
@ -2330,7 +2330,7 @@
|
||||
|
||||
if (!weatherEnabled) {
|
||||
layer.msg(
|
||||
'天气预测功能未启用,请在地图功能菜单中开启',
|
||||
'天气预测功能未启用',
|
||||
{time: 2000}
|
||||
);
|
||||
return;
|
||||
@ -2400,10 +2400,11 @@
|
||||
var requestBody = {
|
||||
"lat": parseFloat(lat.toFixed(2)),
|
||||
"lon": parseFloat(lon.toFixed(2)),
|
||||
"model": "gfs",
|
||||
"model": "gfs", // 使用全球预报系统模型
|
||||
"parameters": ["temp", "wind", "precip", "pressure", "rh", "windGust"],
|
||||
"levels": ["surface"],
|
||||
"key": weatherApiKey
|
||||
"key": weatherApiKey,
|
||||
"hours": 72 // 请求未来72小时的预报数据,确保有足够的未来预测
|
||||
};
|
||||
|
||||
fetch('https://api.windy.com/api/point-forecast/v2', {
|
||||
@ -2422,7 +2423,43 @@
|
||||
})
|
||||
.then(function(data) {
|
||||
weatherData = data;
|
||||
currentForecastIndex = 0;
|
||||
|
||||
// 找到最接近当前时间的预报索引,优先选择未来时间点
|
||||
var currentTime = new Date().getTime();
|
||||
var closestIndex = 0;
|
||||
var futureIndex = -1; // 记录第一个未来时间点
|
||||
var smallestDiff = Number.MAX_VALUE;
|
||||
|
||||
if (weatherData.ts && weatherData.ts.length > 0) {
|
||||
// 首先尝试找到第一个未来时间点
|
||||
for (var i = 0; i < weatherData.ts.length; i++) {
|
||||
if (weatherData.ts[i] > currentTime) {
|
||||
futureIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果找到了未来时间点,直接使用
|
||||
if (futureIndex >= 0) {
|
||||
closestIndex = futureIndex;
|
||||
} else {
|
||||
// 否则找最接近的时间点
|
||||
for (var i = 0; i < weatherData.ts.length; i++) {
|
||||
var diff = Math.abs(weatherData.ts[i] - currentTime);
|
||||
if (diff < smallestDiff) {
|
||||
smallestDiff = diff;
|
||||
closestIndex = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 打印调试信息
|
||||
console.log("当前时间:", new Date(currentTime).toLocaleString());
|
||||
console.log("选择的预报时间:", new Date(weatherData.ts[closestIndex]).toLocaleString());
|
||||
console.log("所有可用时间点:", weatherData.ts.map(ts => new Date(ts).toLocaleString()));
|
||||
}
|
||||
|
||||
currentForecastIndex = closestIndex;
|
||||
displayCurrentForecast();
|
||||
updateForecastNavigation();
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user