-
Notifications
You must be signed in to change notification settings - Fork 77
Expand file tree
/
Copy pathindex.html
More file actions
423 lines (405 loc) · 28.2 KB
/
Copy pathindex.html
File metadata and controls
423 lines (405 loc) · 28.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
<!doctype html>
<html lang="zh-Hant">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Mini Map Macau · 澳門公共交通 3D 即時模擬地圖</title>
<meta
name="description"
content="互動式澳門公共交通 3D 地圖:即時模擬輕軌氹仔線、石排灣線、橫琴線與 90+ 條巴士路線(含跨海線與夜間巴士)。查詢到站時間 ETA、車站資訊與路線圖。Real-time Macau LRT & bus network simulation on an interactive 3D map — track 400+ vehicles across Taipa, Cotai, and the Peninsula with live ETAs."
/>
<meta
name="keywords"
content="澳門, 輕軌, 巴士, 公共交通, 3D地圖, 即時模擬, 交通路線, 澳門輕軌, 澳門巴士, 澳門交通, 澳門地圖, 氹仔線, 石排灣線, 橫琴線, 媽閣站, 蓮花站, 機場站, 氹仔碼頭站, 路氹, 氹仔, 路環, 澳門半島, 班次查詢, 到站時間, 路線圖, 乘車資訊, 新福利, 澳巴, 跨海線, 夜間巴士, 交通資訊, WebGL, 互動地圖, Macau, Macao, MLM, Macau LRT, Macau Light Metro, Macau bus, Macau transit, Macau public transport, Macau map, Macau route, real-time simulation, 3D map, interactive map, transit tracker, bus tracker, ETA, live transit, Taipa Line, Seac Pai Van Line, Hengqin Line, Cotai, Taipa, Coloane, Macau Peninsula, Ponte Governador Nobre de Carvalho, 嘉樂庇總督大橋, Ponte de Sai Van, 西灣大橋, Ponte de Amizade, 友誼大橋, mapa de Macau, transporte público de Macau, autocarro de Macau, Metro Ligeiro de Macau"
/>
<meta name="author" content="Mini Map Macau" />
<meta name="robots" content="index,follow,max-image-preview:large" />
<meta name="googlebot" content="index,follow" />
<meta name="theme-color" content="#0a0a0a" />
<meta name="format-detection" content="telephone=no" />
<link rel="canonical" href="https://mini-map-macau.app/" />
<link rel="alternate" hreflang="zh-Hant" href="https://mini-map-macau.app/" />
<link rel="alternate" hreflang="en" href="https://mini-map-macau.app/" />
<link rel="alternate" hreflang="pt" href="https://mini-map-macau.app/" />
<link rel="alternate" hreflang="x-default" href="https://mini-map-macau.app/" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="apple-touch-icon" href="/favicon.svg" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Mini Map Macau" />
<meta property="og:title" content="Mini Map Macau · 澳門公共交通 3D 即時模擬地圖" />
<meta
property="og:description"
content="互動式澳門公共交通 3D 地圖:即時模擬輕軌 3 條線與 90+ 條巴士路線,查詢到站時間與路線圖。"
/>
<meta property="og:url" content="https://mini-map-macau.app/" />
<meta property="og:locale" content="zh_HK" />
<meta property="og:locale:alternate" content="en_US" />
<meta property="og:locale:alternate" content="pt_PT" />
<meta property="og:image" content="https://mini-map-macau.app/og-image.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image:alt" content="Mini Map Macau 3D transit simulation" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Mini Map Macau · 澳門公共交通 3D 即時模擬地圖" />
<meta
name="twitter:description"
content="互動式澳門公共交通 3D 地圖:即時模擬輕軌 3 條線與 90+ 條巴士路線,查詢到站時間與路線圖。"
/>
<meta name="twitter:image" content="https://mini-map-macau.app/og-image.png" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<!-- Non-blocking webfont load: preload the stylesheet, apply via
media="print" → onload swap to "all". display=optional (not swap)
avoids CLS entirely — the browser uses fallback if the webfont
hasn't arrived in ~100ms and never swaps mid-session. Repeat
visitors hit cache within the block period and see webfonts
normally. Noto Sans HK streams in many CJK subset files and each
would have caused its own reflow under swap. -->
<link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Orbitron:wght@700;900&family=JetBrains+Mono:wght@400;500;700&family=Noto+Sans+HK:wght@400;500;700&display=optional" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Orbitron:wght@700;900&family=JetBrains+Mono:wght@400;500;700&family=Noto+Sans+HK:wght@400;500;700&display=optional" media="print" onload="this.media='all'" />
<noscript>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Orbitron:wght@700;900&family=JetBrains+Mono:wght@400;500;700&family=Noto+Sans+HK:wght@400;500;700&display=optional" />
</noscript>
<!-- Basemap/tile preconnects are injected just-in-time when MapView
starts to lazy-load (see src/App.tsx) so the TCP/TLS handshake
overlaps with the MapLibre chunk download and isn't wasted by
preconnect timeout before the first tile fetch. -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Mini Map Macau",
"alternateName": ["澳門迷你交通地圖", "Mini Mapa Macau", "澳門即時交通地圖", "澳門3D巴士地圖"],
"url": "https://mini-map-macau.app/",
"description": "Real-time 3D simulation of Macau's public transit network — LRT (Taipa, Seac Pai Van, Hengqin lines) and 90+ bus routes with 400+ vehicles moving on an interactive map. View live ETAs, station info, and route maps.",
"applicationCategory": "TravelApplication",
"applicationSubCategory": "TransportationApplication",
"operatingSystem": "Any (browser with WebGL 2.0)",
"browserRequirements": "Requires JavaScript and WebGL 2.0",
"inLanguage": ["zh-Hant", "pt-PT", "en"],
"isAccessibleForFree": true,
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"keywords": "澳門輕軌, 澳門巴士, 氹仔線, 石排灣線, 橫琴線, Macau LRT, Macau bus, transit tracker, 到站時間, ETA, 路線圖",
"about": [
{ "@type": "Thing", "name": "Macau Light Rapid Transit", "sameAs": "https://en.wikipedia.org/wiki/Macau_Light_Rapid_Transit" },
{ "@type": "Thing", "name": "Public transport in Macau", "sameAs": "https://en.wikipedia.org/wiki/Public_transport_in_Macau" },
{ "@type": "Thing", "name": "Taipa", "sameAs": "https://en.wikipedia.org/wiki/Taipa" },
{ "@type": "Thing", "name": "Cotai", "sameAs": "https://en.wikipedia.org/wiki/Cotai" }
],
"spatialCoverage": {
"@type": "Place",
"name": "Macau SAR, China",
"alternateName": ["澳門", "Macao", "Região Administrativa Especial de Macau"],
"geo": {
"@type": "GeoCoordinates",
"latitude": 22.1604,
"longitude": 113.5592
},
"containedInPlace": {
"@type": "Country",
"name": "China"
}
}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "地圖上的車輛是即時數據嗎?",
"acceptedAnswer": { "@type": "Answer", "text": "預設為時刻表驅動的模擬:車輛按官方時刻表與班距沿真實路線幾何行駛,並非真實 GPS 位置。巴士可於選單開啟 RT 模式,改用交通事務局(DSAT)即時數據顯示巴士位置;輕軌、航班與渡輪維持模擬。" }
},
{
"@type": "Question",
"name": "如何查詢巴士或輕軌的到站時間?",
"acceptedAnswer": { "@type": "Answer", "text": "點擊地圖上任一車站或車輛,面板會顯示預計到站時間(ETA)、下一班車與路線詳情。" }
},
{
"@type": "Question",
"name": "澳門輕軌有哪些路線和車站?",
"acceptedAnswer": { "@type": "Answer", "text": "共 3 條線:氹仔線、石排灣線與橫琴線,合計 15 個車站,涵蓋媽閣、機場、氹仔碼頭等交通樞紐。" }
},
{
"@type": "Question",
"name": "網站支援哪些語言?",
"acceptedAnswer": { "@type": "Answer", "text": "繁體中文、英文(English)與葡萄牙文(Português),可於選單切換;站名、路線與航班資訊會同步切換語言。" }
},
{
"@type": "Question",
"name": "資料來源是什麼?",
"acceptedAnswer": { "@type": "Answer", "text": "巴士路線與車站來自澳門交通事務局(DSAT)公開資料;輕軌資訊來自澳門輕軌(MLM);航班時刻來自 AviationStack;渡輪時刻來自 TurboJET 與 CotaiJet 官方網站。" }
},
{
"@type": "Question",
"name": "手機可以使用嗎?需要安裝 App 嗎?",
"acceptedAnswer": { "@type": "Answer", "text": "不需安裝。任何支援 WebGL 的現代瀏覽器(手機或電腦)直接開啟網站即可使用,介面已針對手機觸控優化。" }
},
{
"@type": "Question",
"name": "為什麼有些巴士路線沒有顯示?",
"acceptedAnswer": { "@type": "Answer", "text": "預設「自動模式」只顯示目前營運中的路線,深夜時段日間路線會自動隱藏;可在圖層面板手動開啟任何路線。" }
},
{
"@type": "Question",
"name": "這是澳門政府的官方網站嗎?",
"acceptedAnswer": { "@type": "Answer", "text": "不是。本站為個人開源專案,與澳門特別行政區政府、DSAT、澳門輕軌及各營運商均無從屬關係;資訊僅供參考,實際班次以官方公布為準。" }
}
]
}
</script>
<script>
// GA4 — defer the tag script until the browser is idle so it does not
// compete with MapLibre parsing + React hydration on the main thread.
// dataLayer and gtag() stubs are ready immediately so any early
// gtag('event', ...) calls still queue correctly; they drain once the
// real gtag.js script loads.
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-754JZVPQB2');
(function(){
function loadGA(){
var s = document.createElement('script');
s.async = true;
s.src = 'https://www.googletagmanager.com/gtag/js?id=G-754JZVPQB2';
document.head.appendChild(s);
}
if ('requestIdleCallback' in window) {
requestIdleCallback(loadGA, { timeout: 4000 });
} else {
setTimeout(loadGA, 3000);
}
})();
</script>
<style>
/* Site info panel — self-contained styles (si-*). Deliberately not
Tailwind: the transit lists are injected at build time and Tailwind
only generates classes it can see in source files. */
#site-info-backdrop {
position: fixed; inset: 0; z-index: 100;
background: rgba(0, 0, 0, 0.65);
}
#site-info {
position: fixed; z-index: 101;
top: 50%; left: 50%; transform: translate(-50%, -50%);
width: min(720px, calc(100vw - 24px));
height: min(85dvh, 900px);
background: #0b0b0d; color: #eaeaea;
border: 1px solid rgba(252, 196, 65, 0.25);
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.8);
display: flex; flex-direction: column;
font-family: 'Noto Sans HK', 'Noto Sans TC', -apple-system, sans-serif;
}
#site-info[hidden], #site-info-backdrop[hidden] { display: none; }
.si-head {
display: flex; align-items: center; justify-content: space-between;
padding: 10px 12px; border-bottom: 1px solid rgba(252, 196, 65, 0.2);
flex-shrink: 0;
}
.si-tabs { display: flex; gap: 6px; }
.si-tab {
font-family: 'JetBrains Mono', ui-monospace, monospace;
font-size: 11px; letter-spacing: 0.12em;
padding: 5px 12px; cursor: pointer;
background: rgba(255, 255, 255, 0.02); color: rgba(255, 255, 255, 0.5);
border: 1px solid rgba(255, 255, 255, 0.12);
}
.si-tab[aria-pressed="true"] {
background: rgba(252, 196, 65, 0.1); color: #fde68a;
border-color: rgba(252, 196, 65, 0.5);
}
.si-close {
width: 30px; height: 30px; cursor: pointer;
background: transparent; color: rgba(255, 255, 255, 0.6);
border: 1px solid rgba(255, 255, 255, 0.15); font-size: 13px;
}
.si-close:hover { color: #fde68a; border-color: rgba(252, 196, 65, 0.5); }
.si-scroll { overflow-y: auto; padding: 14px 16px 28px; overscroll-behavior: contain; }
#site-info h1 { font-size: 18px; line-height: 1.4; color: #fde68a; margin: 0 0 10px; }
#site-info h2 {
font-size: 14px; color: #fcd34d; margin: 22px 0 8px;
padding-bottom: 4px; border-bottom: 1px solid rgba(252, 196, 65, 0.15);
}
#site-info h3 { font-size: 12.5px; color: rgba(255, 255, 255, 0.85); margin: 14px 0 6px; }
#site-info p, #site-info dd { font-size: 12.5px; line-height: 1.7; color: rgba(255, 255, 255, 0.7); margin: 0 0 8px; }
#site-info dt { font-size: 12.5px; font-weight: 700; color: rgba(255, 255, 255, 0.9); margin: 12px 0 2px; }
#site-info dl { margin: 0; }
#site-info a { color: #fcd34d; }
.si-stations, .si-routes, .si-ferries {
margin: 0 0 6px; padding-left: 20px;
font-size: 12px; line-height: 1.8; color: rgba(255, 255, 255, 0.65);
}
.si-routes { list-style: none; padding-left: 2px; column-width: 200px; column-gap: 18px; }
.si-routes b {
font-family: 'JetBrains Mono', ui-monospace, monospace;
color: #fde68a; font-weight: 700; margin-right: 6px;
}
/* Language tabs: only the active language block is shown; the shared
transit lists below are always visible. */
#site-info [data-si-lang] { display: none; }
#site-info[data-lang="zh"] [data-si-lang="zh"],
#site-info[data-lang="en"] [data-si-lang="en"],
#site-info[data-lang="pt"] [data-si-lang="pt"] { display: block; }
</style>
</head>
<body>
<div id="root"></div>
<div id="site-info-backdrop" hidden></div>
<aside id="site-info" hidden data-lang="zh" role="dialog" aria-modal="true" aria-labelledby="si-title">
<header class="si-head">
<div class="si-tabs">
<button type="button" class="si-tab" data-lang-tab="zh" aria-pressed="true">繁中</button>
<button type="button" class="si-tab" data-lang-tab="en" aria-pressed="false">EN</button>
<button type="button" class="si-tab" data-lang-tab="pt" aria-pressed="false">PT</button>
</div>
<button type="button" id="site-info-close" class="si-close" aria-label="close">✕</button>
</header>
<div class="si-scroll">
<div data-si-lang="zh" lang="zh-Hant">
<h1 id="si-title">Mini Map Macau · 澳門公共交通 3D 即時模擬地圖</h1>
<p>Mini Map Macau 是一個互動式澳門公共交通 3D 地圖,以官方時刻表驅動的方式,模擬澳門輕軌(氹仔線、石排灣線、橫琴線)、90+ 條巴士路線(含跨海線與夜間巴士)、港澳/深圳渡輪航線,以及澳門國際機場(MFM)的真實航班動態。點擊任一車輛或車站,即可查看預計到站時間(ETA)、路線詳情與服務狀態;支援 3D/2D 視角、深淺色地圖、時間控制(暫停、1×–60× 加速、任意日期時間)與車輛追蹤。</p>
<h2>常見問題</h2>
<dl>
<dt>地圖上的車輛是即時數據嗎?</dt>
<dd>預設為時刻表驅動的模擬:車輛按官方時刻表與班距沿真實路線幾何行駛,並非真實 GPS 位置。巴士可於選單開啟 RT 模式,改用交通事務局(DSAT)即時數據顯示巴士位置;輕軌、航班與渡輪維持模擬。</dd>
<dt>如何查詢巴士或輕軌的到站時間?</dt>
<dd>點擊地圖上任一車站或車輛,面板會顯示預計到站時間(ETA)、下一班車與路線詳情。</dd>
<dt>澳門輕軌有哪些路線和車站?</dt>
<dd>共 3 條線:氹仔線、石排灣線與橫琴線,合計 15 個車站,涵蓋媽閣、機場、氹仔碼頭等交通樞紐。完整列表見下方「澳門輕軌路線與車站」。</dd>
<dt>網站支援哪些語言?</dt>
<dd>繁體中文、英文(English)與葡萄牙文(Português),可於選單切換;站名、路線與航班資訊會同步切換語言。</dd>
<dt>資料來源是什麼?</dt>
<dd>巴士路線與車站來自澳門交通事務局(DSAT)公開資料;輕軌資訊來自澳門輕軌(MLM);航班時刻來自 AviationStack;渡輪時刻來自 TurboJET 與 CotaiJet 官方網站。</dd>
<dt>手機可以使用嗎?需要安裝 App 嗎?</dt>
<dd>不需安裝。任何支援 WebGL 的現代瀏覽器(手機或電腦)直接開啟網站即可使用,介面已針對手機觸控優化。</dd>
<dt>為什麼有些巴士路線沒有顯示?</dt>
<dd>預設「自動模式」只顯示目前營運中的路線,深夜時段日間路線會自動隱藏;可在圖層面板手動開啟任何路線。</dd>
<dt>這是澳門政府的官方網站嗎?</dt>
<dd>不是。本站為個人開源專案,與澳門特別行政區政府、DSAT、澳門輕軌及各營運商均無從屬關係;資訊僅供參考,實際班次以官方公布為準。</dd>
</dl>
<h2>資料來源與聲明</h2>
<p>本站為開源的非官方專案。巴士資料來自 <a href="https://www.dsat.gov.mo/" target="_blank" rel="noopener noreferrer">DSAT</a>、輕軌資料來自 <a href="https://www.mlm.com.mo/" target="_blank" rel="noopener noreferrer">澳門輕軌</a>、航班資料來自 <a href="https://aviationstack.com/" target="_blank" rel="noopener noreferrer">AviationStack</a>、渡輪時刻來自 <a href="https://www2.turbojet.com.hk/" target="_blank" rel="noopener noreferrer">TurboJET</a> 與 <a href="https://www.cotaiwaterjet.com/" target="_blank" rel="noopener noreferrer">CotaiJet</a>。地圖為時刻表驅動之模擬,僅供參考。</p>
</div>
<div data-si-lang="en" lang="en">
<h2>Mini Map Macau — Real-time 3D Macau Public Transport Map</h2>
<p>Mini Map Macau is an interactive 3D map of Macau's public transport network. A timetable-driven simulation animates the Macau LRT (Taipa, Seac Pai Van and Hengqin lines), 90+ bus routes including cross-harbour and night services, HK/Shenzhen–Macau ferry routes, and real flights at Macau International Airport (MFM). Click any vehicle or station for live ETAs, route details and service status; switch 3D/2D views, dark/light styles, control time (pause, 1×–60× speed, any date/time) and track vehicles.</p>
<h2>FAQ</h2>
<dl>
<dt>Is the vehicle data real-time?</dt>
<dd>By default it is a timetable-driven simulation: vehicles follow real route geometry according to official timetables and headways, not live GPS. An opt-in RT mode replaces simulated bus positions with the DSAT live feed; LRT, flights and ferries remain simulated.</dd>
<dt>How do I check arrival times (ETA)?</dt>
<dd>Click any station or vehicle on the map to see estimated arrivals, the next departures and route details.</dd>
<dt>Which LRT lines and stations are covered?</dt>
<dd>All 3 lines — Taipa, Seac Pai Van and Hengqin — with 15 stations including Barra, Airport and Taipa Ferry Terminal. See the full list below.</dd>
<dt>Which languages are supported?</dt>
<dd>Traditional Chinese, English and Portuguese; station names, routes and flight info all switch with the language.</dd>
<dt>What are the data sources?</dt>
<dd>Bus routes and stops from Macau's Transport Bureau (DSAT) open data; LRT information from Macao LRT (MLM); flight schedules from AviationStack; ferry timetables from TurboJET and CotaiJet.</dd>
<dt>Does it work on mobile? Do I need an app?</dt>
<dd>No install needed — any modern browser with WebGL works, and the UI is optimised for touch.</dd>
<dt>Why are some bus routes not shown?</dt>
<dd>The default auto mode shows only routes currently in service; daytime routes hide late at night. Any route can be enabled manually in the layers panel.</dd>
<dt>Is this an official government website?</dt>
<dd>No. This is a personal open-source project, unaffiliated with the Macau SAR Government, DSAT, Macao LRT or any operator. For reference only — actual schedules are as officially published.</dd>
</dl>
<h2>Sources & Disclaimer</h2>
<p>An open-source, unofficial project. Bus data from <a href="https://www.dsat.gov.mo/" target="_blank" rel="noopener noreferrer">DSAT</a>, LRT data from <a href="https://www.mlm.com.mo/" target="_blank" rel="noopener noreferrer">Macao LRT</a>, flights from <a href="https://aviationstack.com/" target="_blank" rel="noopener noreferrer">AviationStack</a>, ferry timetables from <a href="https://www2.turbojet.com.hk/" target="_blank" rel="noopener noreferrer">TurboJET</a> and <a href="https://www.cotaiwaterjet.com/" target="_blank" rel="noopener noreferrer">CotaiJet</a>. The map is a timetable-driven simulation, for reference only.</p>
</div>
<div data-si-lang="pt" lang="pt">
<h2>Mini Map Macau — Mapa 3D do Transporte Público de Macau</h2>
<p>O Mini Map Macau é um mapa 3D interactivo da rede de transportes públicos de Macau. Uma simulação baseada em horários anima o Metro Ligeiro de Macau (linhas da Taipa, de Seac Pai Van e de Hengqin), mais de 90 rotas de autocarro incluindo linhas transfronteiriças e nocturnas, rotas de ferry Hong Kong/Shenzhen–Macau e voos reais do Aeroporto Internacional de Macau (MFM). Clique em qualquer veículo ou estação para ver tempos de chegada (ETA), detalhes da rota e estado do serviço.</p>
<h2>Perguntas Frequentes</h2>
<dl>
<dt>Os dados dos veículos são em tempo real?</dt>
<dd>Por defeito é uma simulação baseada em horários: os veículos seguem a geometria real das rotas segundo os horários oficiais, não posições GPS reais. O modo RT (opcional) substitui as posições simuladas dos autocarros pelos dados em tempo real da DSAT; o metro ligeiro, os voos e os ferries permanecem simulados.</dd>
<dt>Como consultar os tempos de chegada (ETA)?</dt>
<dd>Clique em qualquer estação ou veículo no mapa para ver as próximas chegadas e os detalhes da rota.</dd>
<dt>Quais são as linhas e estações do Metro Ligeiro?</dt>
<dd>As 3 linhas — Taipa, Seac Pai Van e Hengqin — com 15 estações, incluindo Barra, Aeroporto e Terminal Marítimo da Taipa. Veja a lista completa abaixo.</dd>
<dt>Que línguas são suportadas?</dt>
<dd>Chinês tradicional, inglês e português; os nomes das estações, rotas e voos mudam com a língua.</dd>
<dt>Quais são as fontes de dados?</dt>
<dd>Rotas e paragens de autocarro dos dados abertos da DSAT; informação do metro ligeiro da MLM; horários de voos da AviationStack; horários de ferry da TurboJET e CotaiJet.</dd>
<dt>Funciona no telemóvel? É preciso instalar uma app?</dt>
<dd>Não é preciso instalar — funciona em qualquer navegador moderno com WebGL, com interface optimizada para ecrã táctil.</dd>
<dt>Porque é que algumas rotas de autocarro não aparecem?</dt>
<dd>O modo automático mostra apenas as rotas actualmente em serviço; as rotas diurnas ficam ocultas durante a madrugada. Qualquer rota pode ser activada manualmente no painel de camadas.</dd>
<dt>É um site oficial do Governo?</dt>
<dd>Não. É um projecto pessoal de código aberto, sem afiliação com o Governo da RAEM, a DSAT, o Metro Ligeiro de Macau ou qualquer operador. Apenas para referência.</dd>
</dl>
<h2>Fontes e Aviso</h2>
<p>Projecto não oficial de código aberto. Dados de autocarros da <a href="https://www.dsat.gov.mo/" target="_blank" rel="noopener noreferrer">DSAT</a>, metro ligeiro da <a href="https://www.mlm.com.mo/" target="_blank" rel="noopener noreferrer">MLM</a>, voos da <a href="https://aviationstack.com/" target="_blank" rel="noopener noreferrer">AviationStack</a>, ferries da <a href="https://www2.turbojet.com.hk/" target="_blank" rel="noopener noreferrer">TurboJET</a> e <a href="https://www.cotaiwaterjet.com/" target="_blank" rel="noopener noreferrer">CotaiJet</a>. O mapa é uma simulação baseada em horários, apenas para referência.</p>
</div>
<div class="si-shared">
<!-- SEO:TRANSIT_LISTS -->
</div>
</div>
</aside>
<noscript>
<div style="padding:2rem;font-family:system-ui;color:#ddd;background:#111;min-height:100vh;">
<h1>Mini Map Macau — 澳門公共交通 3D 即時模擬地圖</h1>
<p>互動式澳門公共交通 3D 地圖:即時模擬輕軌氹仔線、石排灣線、橫琴線與 90+ 條巴士路線。提供到站時間查詢、車站資訊與路線圖。需要啟用 JavaScript 才能載入。</p>
<p>Real-time 3D simulation of Macau's public transit — LRT (Taipa, Seac Pai Van, Hengqin lines) and 90+ bus routes across the Peninsula, Taipa, and Cotai. Track 400+ vehicles with live ETAs. Please enable JavaScript.</p>
<p>Mapa interactivo 3D do transporte público de Macau — Metro Ligeiro e mais de 90 rotas de autocarro. Por favor active o JavaScript.</p>
</div>
</noscript>
<script type="module" src="/src/main.tsx"></script>
<script>
// Site info panel controls. Plain JS on purpose: the panel must work
// independently of the React bundle, and React only ever calls
// window.miniMacauInfo.open().
(function () {
var panel = document.getElementById('site-info');
var backdrop = document.getElementById('site-info-backdrop');
var closeBtn = document.getElementById('site-info-close');
if (!panel || !backdrop || !closeBtn) return;
function setLang(l) {
panel.setAttribute('data-lang', l);
var tabs = panel.querySelectorAll('.si-tab');
for (var i = 0; i < tabs.length; i++) {
tabs[i].setAttribute('aria-pressed',
tabs[i].getAttribute('data-lang-tab') === l ? 'true' : 'false');
}
}
var lastFocus = null;
function open() {
var saved = null;
try { saved = localStorage.getItem('mm_lang'); } catch (e) { /* private mode */ }
setLang(saved === 'en' || saved === 'pt' ? saved : 'zh');
lastFocus = document.activeElement;
panel.hidden = false;
backdrop.hidden = false;
closeBtn.focus();
}
function close() {
panel.hidden = true;
backdrop.hidden = true;
if (lastFocus && typeof lastFocus.focus === 'function') lastFocus.focus();
lastFocus = null;
}
panel.addEventListener('click', function (e) {
var t = e.target && e.target.closest ? e.target.closest('[data-lang-tab]') : null;
if (t) setLang(t.getAttribute('data-lang-tab'));
});
closeBtn.addEventListener('click', close);
backdrop.addEventListener('click', close);
// Capture phase + stopPropagation so Esc closes the panel without
// also toggling the app drawer (MapView listens on window bubble).
window.addEventListener('keydown', function (e) {
if (e.key === 'Escape' && !panel.hidden) {
e.stopPropagation();
close();
}
}, true);
window.miniMacauInfo = { open: open, close: close };
})();
</script>
</body>
</html>