Repository navigation
Architecture he
🇬🇧 English
NavAid הוא HTML / CSS / JavaScript פשוט מעל Leaflet. ללא שלב בנייה (build), ללא bundler, ללא transpiler. מה שמופץ ב-docs/ הוא בדיוק מה שרץ.
ראו Directory Structure לעץ docs/ הנוכחי. בקצרה: קוד זמן-ריצה יושב ב-docs/app/, מאגרי נתונים ב-docs/data/, חבילות שפה ב-docs/i18n/, תמונות דפדפן ב-docs/assets/, וקובצי מפה סטטית ישנים ב-docs/legacy/.
תגי <script> ב-index.html נטענים בסדר המדויק הזה — אין importים:
i18n/<lang>/strings.js
└── מגדיר window.S = { … } ל-i18n
app/core.js
└── מרחב השמות window.NavAid, map = L.map(...), רישום הכוונון, פונקציות עזר
app/route-graph-shapes.js
└── גוזר נקודות ניווט / גבהי קטעים / נקודות חילופי תדר מגרף השכבה
app/terrain.js
└── רשת שטח + עזרי גובה בטוח מינימלי (MSA)
app/draw.js
└── draw(), scheduleDraw() (מאוחד דרך rAF)
app/interact.js
└── מטפלי אירועים של שכבת הקנבס, hit-test, גרירה
app/io.js
└── שמירה/טעינה, exportPNG, תוכנית טיסה, KML
app/alt-pair-directions.js
└── עזרי כיוון לזוגות גובה
app/gdrive.js
└── ספריית מסלולים אופציונלית ב-Google Drive
app/gps.js
└── מיקום חי, הקלטת מסלול, התראות טיסה, נפילה למצפן
app/ui.js
└── חיווט סרגל הכלים, בורר השכבות, חוגת הסיבוב, כפתורי המפה, אתחול
app/editor.js
└── עורך נתוני המפה של ?editor=1
app/assistant.js
└── חלונית העוזר החכם (כבויה אלא אם featureAssistant דלוק)
app/offline-tiles.js
└── חבילות מפה להורדה לשימוש לא־מקוון
כל מודול מצרף את הממשק הציבורי שלו ל-window.NavAid או נשען על פונקציה גלובלית ממודול קודם. אין מערכת מודולים.
מרחב שמות גלובלי יחיד window.NavAid בתוספת מספר משתנים מקומיים למודול. צורת המצב המרכזית:
{
waypoints: [{ lat, lng, name }],
legs: [{ inboundAltitude, outboundAltitude, flightSpeed,
inLabel: { a, p }, outLabel: { a, p } }],
notes: [{ lat, lng, text, color, shape }]
}מספר ה-legs תמיד max(0, waypoints.length - 1).
הרינדור מתבצע על <canvas id="overlay"> הממוקם מעל מפת Leaflet. Leaflet מטפל באריחים + זום/הסחה; NavAid מצייר את כל השאר.
כל קריאת draw():
- שינוי גודל הקנבס להתאמה לגודל המפה.
- ניקוי.
- הקרנת כל המיקומים דרך
map.latLngToContainerPoint(...)לקואורדינטות פיקסל נוכחיות. - ציור רכיבי המסלול המרכזיים בסדר מפושט זה (מאחור לפנים):
- נקודות ניווט (אם המתג פעיל).
- שדות תעופה (אם המתג פעיל).
- רגליים (קו, חץ, תווית מרחק אמצע-רגל, חץ חזרה אם פעיל, הילה אם highlight-diff).
- נקודות ציון (עיגול + שם / מספר).
- הערות (רקע, ואז טקסט).
- מסגרת עמוד (מלבן מקווקו אם A3/A4 פעיל).
- שמירת המצב אם לא מייצאים.
הרשימה מקוצרת בכוונה. draw() ב־docs/app/draw.js הוא המקור המוסמך לסדר
המלא, לרבות שטח, אזורים, טבעות, שכבות VOR/NOTAM, עפיפונים, עקבות, מיקום עצמי,
מידע וכרטיס תוכנית הטיסה.
draw() עטוף ב-scheduleDraw() שמכווץ קריאות מרובות ל-requestAnimationFrame יחיד, ומונע צייר-יתר בזמן הסחה/זום/סיבוב.
interact.js משקף בדרך כלל את עדיפות הציור בסדר הפוך כך שהרכיב העליון
מנצח. קואורדינטות הלחיצה מומרות לפיקסלים במכל המפה; לכל סוג רכיב יש פונקציית
hit*. הסדר המפושט של רכיבי המסלול המרכזיים הוא:
hitNote -> hitWaypoint -> hitLegLabel -> hitLeg -> hitPageFrame
זה תואם את סדר הציור כך שהערות חופפות נשארות ניתנות לבחירה מעל נקודות ציון.
interact.js הוא המקור המוסמך גם לעדיפויות הנוספות של תוויות קשר, סמני שכבה,
NOTAM/בועות, עפיפוני מרחק מצטבר ופריטים נבחרים.
דרך תוסף leaflet-rotate. החוגה היא פקד DOM מותאם ליד כפתורי הזום של Leaflet. אירוע ה-rotate מפעיל refreshDial() + scheduleDraw() ושומר את map.getBearing() ל-localStorage (מושתק בזמן ייצוא).
ממומש ב-io.js:
- צילום גאומטריית מסגרת-העמוד הנוכחית.
- בחירת זום אריח היעד: הזום המקורי הגבוה ביותר שמשאיר את תיבת התוחם המסובבת ≤ 10,000 × 10,000 פיקסל.
- בניית רשת אריחים המכסה את המסגרת המסובבת.
- גזירת בקשות אריחי flight-maps.com לגבולות המפה המפורסמים ומשיכת כל אריח (ישירות ל-OSM / Esri; דרך מראת הייצוא
navaid-tiles.supino.orgעבור שכבות המפה). אריחי 404 הם ריקים צפויים ומדולגים. - הרכבת האריחים על קנבס מחוץ-למסך, תוך כיבוד מחוון Map opacity.
- הקרנה + ציור השכבה מעל, כולל נקודות ניווט ושדות תעופה כשהם מופעלים.
- המרה ל-Blob, שחרור אינטראקציית המפה, והפעלת ההורדה.
ראו Service Worker.
ראו Bilingual UI. ברמת ה-DOM: תכונות data-i18n="key" / data-i18n-title="key" / data-i18n-placeholder="key" נקראות מ-window.S. אין MessageFormat / ICU; רק חיפושי מחרוזות.
ללא בנייה. תיקיית docs/ היא התוצר. תהליך עבודה של GitHub Actions מרכיב main/docs/ -> / ו-dev/docs/ -> /staging/, משכתב את ?v= ואת NavAid.version ל-short SHA של הענף, ומפרסם ל-GitHub Pages. ראו Deployment.
For pilots
- Quick Start
- Video tutorials · סרטונים
- Features
- The Map
- Auto zoom
- Toolbar
- Phone layout
- Safety notice
- Route and Legs
- Waypoints and Notes
- Inspector
- AI Assistant
- User Guide
- Frequency Changes
- VOR and Radial/DME
- Map Layers
- Bearing dial
- Extra Layers
- Airport charts
- Flight Plan
- Route check
- Flight planning form
- Submit a flight plan
- Fuel
- Print and Export
- Simulator Connect
- Google Earth
- GPS Track Recording
- Comm failure
- Follow me
- Bilingual UI
- Offline and PWA
- Settings and Persistence
- Keyboard and Touch
- FAQ and Troubleshooting
For developers
- Architecture
- Directory Structure
- Tuning Panel
- Hidden Tools
- LocalStorage Schema
- Nav-waypoints dataset
- Airfields dataset
- Service Worker
- Deployment
- Contributing
- Changelog
🇮🇱 עברית
לטייסים
- התחלה מהירה
- תכונות
- עוזר AI
- מדריך למשתמש
- זום אוטומטי
- שינויי תדר
- VOR ו-Radial/DME
- סרגל הכלים
- פריסת הטלפון
- הודעת הבטיחות
- שכבות מפה
- שכבות נוספות
- תוכנית טיסה
- בדיקת מסלול
- טופס תכנון טיסה
- הגשת תוכנית טיסה
- הדפסה וייצוא
- חיבור סימולטור
- Google Earth
- הקלטת מסלול GPS
- תקלת קשר
- עקבו אחריי
- ממשק דו-לשוני
- לא מקוון ו-PWA
- הגדרות ושמירה
- מקלדת ומגע
- שאלות נפוצות ופתרון תקלות
למפתחים
🌐 Live 🧪 Staging 📦 Repo 💡 Ideas / bugs