בואו נהיה כנים: כשדשבורד עם מפה מתחיל לגמגם ב-10,000 נקודות, זה כישלון. סמנים רגילים לא יכולים להתמודד עם זה, הדפדפן קופא, משתמשים עוזבים. נתקלנו בזה פעמים רבות. הגישה שלנו: שימוש ב-Mapbox GL JS למפת בסיס מהירה ו-Deck.gl לעיבוד מערכי נתונים גדולים באמצעות WebGL. התוצאה היא 60 FPS אפילו במכשירים ניידים. ארכיטקטורה זו מתמודדת עם מאות אלפי נקודות ללא אובדן ביצועים. יש לנו ניסיון עם למעלה מ-20 פרויקטים של ויזואליזציה גיאוגרפית, כולל דשבורדים ללוגיסטיקה וקמעונאות. תקציב פרויקט טיפוסי נע בין $3,000 ל-$10,000 בהתאם למורכבות. קבלו ייעוץ לפרויקט שלכם.
בעיות שאנחנו פותרים
- גמגום עם סמנים רבים. סמני HTML רגילים או Leaflet לא יכולים להתמודד עם >10,000 נקודות — הדפדפן קופא. Deck.gl מצייר אותן כגאומטריה על ה-GPU, ומשיג 60 FPS עבור 1M נקודות.
- מורכבות התאמה אישית. עסקים צריכים יותר מסתם נקודות: קידוד צבע לפי סטטוס, מפות חום לפעילות, קשתות מסלולים. Mapbox GL + Deck.gl מספקים שכבות גמישות עם מאפיינים הניתנים להתאמה אישית באמצעות WebGL shaders.
- אינטגרציית React. אנחנו משתמשים ב-react-map-gl ו[email protected]/react — הכל עובד במודל קומפוננטות, ללא פריצות.
למה Deck.gl עדיף על Leaflet לנתונים גדולים
Leaflet מצוין למפות פשוטות עם 100–500 סמנים. אבל ככל שהנתונים גדלים, מתחיל גמגום. Deck.gl משתמש ב-WebGL במקום DOM: הוא מצייר גאומטריה על ה-GPU. ההבדל בביצועים מורגש ב-10,000 נקודות — Leaflet מספק ~15 FPS, Deck.gl נשאר ב-60 FPS. בנוסף, ל-Deck.gl יש שכבות אגרגציה מובנות (HeatmapLayer, ScreenGridLayer) שמדללות נתונים אוטומטית. אם הפרויקט שלכם כולל >5,000 נקודות, בחרו ב-Deck.gl.
לפי התיעוד הרשמי, WebGL מאפשר עיבוד על ה-GPU, מה שמפחית משמעותית את עומס ה-CPU. זה מיושם באמצעות ספריית luma.gl. Deck.gl תומך בעד מיליון נקודות ב-60 FPS.
איך להאיץ עיבוד של מאות אלפי נקודות
הטכניקה המרכזית היא אגרגציה. במקום לצייר כל נקודה, אנחנו מחלקים את המסך לרשת וסופרים את מספר הפגיעות בכל תא. Deck.gl עושה זאת על ה-GPU באמצעות GPUGridLayer או HeatmapLayer. חשוב גם לבחור radiusPixels נכון — קטן מדי יוצר רעש, גדול מדי מטשטש פרטים. אנחנו מכוונים פרמטרים לנתונים ספציפיים. למפות choropleth, אנחנו משתמשים ב-GeoJsonLayer עם מצולעים מלאים וסקאלות צבע מחושבות מראש.
איך אנחנו עושים את זה
המחסנית שלנו: React 18, Next.js 14, TypeScript, Mapbox GL JS (v2/v3), Deck.gl (v8/v9), Tailwind. צד שרת: Node.js (Nest.js) או Laravel, מגישים GeoJSON דרך API. נתונים מאוחסנים ב-PostGIS או MongoDB. אופטימיזציה דרך CDN וקאשינג של טיילים.
דוגמה: דשבורד משלוחים עם מפת חום
פעם לקוח הגיע עם משימה: להציג 50,000 הזמנות בזמן אמת על מפה, תוך הצגת צפיפות המשלוחים. עשינו:
- Mapbox GL לשכבת הבסיס (ערכת נושא בהירה, סגנונות מותאמים אישית).
- Deck.gl HeatmapLayer לצפיפות הזמנות.
- ScatterplotLayer לנקודות בצבע לפי סטטוס (נמסר, במשלוח, בוטל).
- ArcLayer למסלולים בין מחסן לנקודות משלוח.
תוצאה: המפה רצה חלקה על iPad. זמן פיתוח: שבועיים, עלות: ~$4,500.
השוואת גישות ויזואליזציה
| מחסנית | ביצועים (1M נקודות) | התאמה אישית | מורכבות |
|---|---|---|---|
| Mapbox GL JS + Deck.gl | 60 FPS | גבוהה (שכבות, shaders) | בינונית |
| Leaflet + MarkerCluster | 10 FPS | בינונית | נמוכה |
| D3.js + SVG | 5 FPS | גבוהה (WebGL ידני) | גבוהה |
| Google Maps API | 30 FPS | נמוכה | בינונית |
אנחנו ממליצים על Mapbox GL + Deck.gl לפרויקטים שבהם מהירות וגמישות חשובות. Leaflet מתאים לאבות טיפוס פשוטים; D3 לתרשימים סטטיים.
התהליך שלנו
- ניתוח. בחינת נתונים: פורמט, נפח, תדירות עדכון. קביעת שכבות נדרשות (נקודות, מפת חום, קשתות, choropleth).
- אב טיפוס. בניית MVP על נתוני בדיקה תוך 2–3 ימים. הצגה והתאמות.
- פיתוח. אינטגרציה לתוך אפליקציית React שלכם. הגדרת אינטראקציות: לחיצה על נקודה → פופ-אפ, פילטרים, אנימציות.
- בדיקת ביצועים. בדיקה על נתונים אמיתיים (10,000–1,000,000 נקודות). אופטימיזציה: הפחתת מספר שכבות, הוספת LOD.
- פריסה. אריזה ל-Docker, הגדרת CDN לטיילים. מסירת קוד ותיעוד.
רשימת בדיקה מפורטת לשלבים
- איסוף דרישות וניתוח נתונים
- בחירת ארכיטקטורה (שכבות, מחסנית)
- אב טיפוס על נתונים סינתטיים
- אינטגרציית React והגדרת אינטראקציות
- אופטימיזציית ביצועים (LOD, אגרגציה)
- פריסה ומסירת תיעוד
- תמיכה לאחר השקה (3 חודשים)
מה כלול
- קוד מקור של קומפוננטות המפה (React/TypeScript)
- תיעוד אינטגרציית API והגדרת טוקנים
- הוראות להוספת שכבות חדשות
- אחריות לתיקון באגים ל-3 חודשים
- תמיכה לאחר השקה: אנחנו עונים על שאלות, עוזרים בעדכוני ספריות
לוחות זמנים ועלויות משוערים
| שלב | משך | טווח עלות |
|---|---|---|
| מפה בסיסית עם סמנים ופופ-אפים | 3–5 ימים | $1,000–$2,000 |
| מפת חום / Scatterplot | שבוע | $2,000–$3,000 |
| שכבות קשתות (מסלולים) | +3–5 ימים | $1,000–$2,000 |
| Choropleth (אזורים) | +3–5 ימים | $1,000–$2,000 |
| אופטימיזציית ביצועים | +2–3 ימים | $500–$1,000 |
| מחזור מלא (דשבורד שלם) | 2–4 שבועות | $3,000–$10,000 |
העלות מחושבת באופן אישי לאחר ניתוח נתונים ודרישות. נבחן את הפרויקט שלכם תוך יום אחד.
טעויות נפוצות
- התעלמות מההיטל. אם הנתונים ב-EPSG:4326 אבל המפה משתמשת ב-Web Mercator, הקואורדינטות זזות. תמיד המירו ל-WGS84.
- יותר מדי שכבות. כל שכבה היא מעבר WebGL. אופטימלי לא יותר מ-5–7 שכבות פעילות. השביתו שכבות בלתי נראות.
- radiusPixels שגוי ב-HeatmapLayer. קטן מדי יוצר רעש, גדול מדי מטשטש. כוונו לפי צפיפות הנתונים.
- חוסר טיפול בשגיאות. GeoJSON שבור מקריס את המפה. אמתו נתונים בצד השרת.
צרו קשר לייעוץ — נבחר את הפתרון הטוב ביותר לפרויקט שלכם. בקשו ניתוח נתונים מקדים כדי לקבל לוחות זמנים ועלויות מדויקים.







