feat: 新增海珠和番禺气象站
This commit is contained in:
parent
f1e54aab9f
commit
a127ddfeba
@ -31,6 +31,8 @@ func StartGinServer() error {
|
||||
r.GET("/", indexHandler)
|
||||
r.GET("/radar/nanning", radarNanningHandler)
|
||||
r.GET("/radar/guangzhou", radarGuangzhouHandler)
|
||||
r.GET("/radar/panyu", radarPanyuHandler)
|
||||
r.GET("/radar/haizhu", radarHaizhuHandler)
|
||||
|
||||
// API路由组
|
||||
api := r.Group("/api")
|
||||
@ -90,6 +92,28 @@ func radarGuangzhouHandler(c *gin.Context) {
|
||||
c.HTML(http.StatusOK, "radar_guangzhou.html", data)
|
||||
}
|
||||
|
||||
// radarHaizhuHandler 海珠雷达站占位页
|
||||
func radarHaizhuHandler(c *gin.Context) {
|
||||
data := types.PageData{
|
||||
Title: "海珠雷达站",
|
||||
ServerTime: time.Now().Format("2006-01-02 15:04:05"),
|
||||
OnlineDevices: database.GetOnlineDevicesCount(database.GetDB()),
|
||||
TiandituKey: "0c260b8a094a4e0bc507808812cefdac",
|
||||
}
|
||||
c.HTML(http.StatusOK, "radar_haizhu.html", data)
|
||||
}
|
||||
|
||||
// radarPanyuHandler 番禺雷达站占位页
|
||||
func radarPanyuHandler(c *gin.Context) {
|
||||
data := types.PageData{
|
||||
Title: "番禺雷达站",
|
||||
ServerTime: time.Now().Format("2006-01-02 15:04:05"),
|
||||
OnlineDevices: database.GetOnlineDevicesCount(database.GetDB()),
|
||||
TiandituKey: "0c260b8a094a4e0bc507808812cefdac",
|
||||
}
|
||||
c.HTML(http.StatusOK, "radar_panyu.html", data)
|
||||
}
|
||||
|
||||
// systemStatusHandler 处理系统状态API请求
|
||||
func systemStatusHandler(c *gin.Context) {
|
||||
status := types.SystemStatus{
|
||||
|
||||
@ -6,6 +6,8 @@
|
||||
<a href="/" class="text-blue-600 hover:text-blue-700">首页</a>
|
||||
<a href="/radar/nanning" class="text-blue-600 hover:text-blue-700">南宁雷达站</a>
|
||||
<a href="/radar/guangzhou" class="text-blue-600 hover:text-blue-700">广州雷达站</a>
|
||||
<a href="/radar/panyu" class="text-blue-600 hover:text-blue-700">番禺雷达站</a>
|
||||
<a href="/radar/haizhu" class="text-blue-600 hover:text-blue-700">海珠雷达站</a>
|
||||
</nav>
|
||||
</div>
|
||||
<style>
|
||||
|
||||
@ -222,14 +222,28 @@
|
||||
const base = forcedDt ? new Date(forcedDt.replace(/-/g,'/')) : new Date(t.dt.replace(/-/g,'/'));
|
||||
// 记录本次瓦片时间供 ETA 使用
|
||||
gTileDT = base;
|
||||
const ceil10=new Date(base); const m=base.getMinutes(); const up=(Math.floor(m/10)*10+10)%60; ceil10.setMinutes(up,0,0); if(up===0){ ceil10.setHours(base.getHours()+1); }
|
||||
const pad=(n)=>String(n).padStart(2,'0'); const dtStr=`${ceil10.getFullYear()}-${pad(ceil10.getMonth()+1)}-${pad(ceil10.getDate())} ${pad(ceil10.getHours())}:${pad(ceil10.getMinutes())}:00`;
|
||||
await loadRealtimeAt(dtStr);
|
||||
await fetchRealtimeWithFallback(base);
|
||||
maybeCalcSector();
|
||||
maybePlotSquare();
|
||||
}catch(e){ await loadRealtimeLatest(); maybeCalcSector(); maybePlotSquare(); }
|
||||
}
|
||||
|
||||
async function fetchRealtimeWithFallback(base){
|
||||
const pad=(n)=>String(n).padStart(2,'0');
|
||||
// 尝试取下一10分钟整(和雷达瓦片时间对齐)
|
||||
const ceil10=new Date(base); const m=base.getMinutes(); const up=(Math.floor(m/10)*10+10)%60; ceil10.setMinutes(up,0,0); if(up===0){ ceil10.setHours(base.getHours()+1); }
|
||||
let dtStr=`${ceil10.getFullYear()}-${pad(ceil10.getMonth()+1)}-${pad(ceil10.getDate())} ${pad(ceil10.getHours())}:${pad(ceil10.getMinutes())}:00`;
|
||||
let res=await fetch(`/api/radar/weather_at?alias=${encodeURIComponent(ST_ALIAS)}&dt=${encodeURIComponent(dtStr)}`);
|
||||
if(res.ok){ const r=await res.json(); fillRealtime(r); return; }
|
||||
// 若没有10分钟数据,退回到当前小时的整点
|
||||
const hour0=new Date(base); hour0.setMinutes(0,0,0);
|
||||
dtStr=`${hour0.getFullYear()}-${pad(hour0.getMonth()+1)}-${pad(hour0.getDate())} ${pad(hour0.getHours())}:00:00`;
|
||||
res=await fetch(`/api/radar/weather_at?alias=${encodeURIComponent(ST_ALIAS)}&dt=${encodeURIComponent(dtStr)}`);
|
||||
if(res.ok){ const r=await res.json(); fillRealtime(r); return; }
|
||||
// 最后退回最新
|
||||
await loadRealtimeLatest();
|
||||
}
|
||||
|
||||
async function loadRealtimeLatest(){
|
||||
const res=await fetch(`/api/radar/weather_latest?alias=${encodeURIComponent(ST_ALIAS)}`);
|
||||
if(!res.ok) throw new Error('加载实时气象失败');
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user