باريس Google Photorealistic 3D Tiles 48.8584° N · 2.2945° E
React 19 · three.js ≥ 0.160 · ESM + CJS + types
خرائط ثلاثية الأبعاد
في الزمن الحقيقي
لـ React
Real-time 3D cartography for React.
محرّك Three.js أمري يركّبه React ثم يتركه يعمل. يملك MapEngine الكاميرا والبلاطات والطبقات، فلا تنتظر حلقة الرسم إعادة تصيير أبدًا.
npm i @pasquelin/map3d three react react-dom
- الإصدار
- 0.6.0
- الاعتماديات النظيرة
- react 19 · three ≥ 0.160
- البناء
- ESM + CJS + .d.ts
- الرخصة
- PolyForm Noncommercial
عروض حيّة
جرّبها في المتصفّح
بلا تثبيت ولا مفاتيح. تُبنى العروض أدناه من هذا المستودع مع كل دفعة، ويقدّمها GitHub Pages مباشرة.
المعرض
من المدار إلى الرصيف
مكتبة واحدة تغطّي النزول كلّه: كرة مدارية، وتجميع إقليمي، وخط السطوح، وأسماء الشوارع تحت القدمين.
-
12 700 km من الكرة إلى الخريطة المسطّحة بديل إهليلجي، وتجميع ذكي
-
9 km العلامات والتجمّعات عُقد DOM مُعاد استخدامها، موزّعة حسب الفئة
-
3 km خط السماء والأفق تحتفظ العلامات بحجمها على الشاشة مهما بلغ الميل
-
900 m شبكة الإحداثيات ملتصقة بالأرض، وسمك الخط على الشاشة ثابت
-
1,7 m وضع المشاة ارتفاع العين، والجاذبية، والاصطدامات
الإمكانات
ما يأتي جاهزًا
كل واجهة — شريط الأدوات، وعناصر التحكّم، والبحث، وشبكة الإحداثيات، والتجميع — تُركَّب داخل <Map> وتقودها الإعدادات. أنت تضيف البيانات فقط.
-
ثلاثي أبعاد واقعي، وثنائي أبعاد مسطّح
cesiumIonTokenبلاطات Google Photorealistic 3D Tiles عبر Cesium Ion، وكرة إهليلجية عند غياب الرمز، وخريطة أساس ثنائية الأبعاد من Google أو من خادم XYZ خاص بك. -
علامات وتجمّعات في DOM
markersLayer()عُقد DOM حقيقية بتمرير وتركيز وحركة CSS أصلية. تُعاد إلى المجمّع وتُكتب في تمريرةtranslate3dواحدة؛ فالعنصر المتحرّك ينزلق بدل أن يُعاد إنشاؤه. -
محرّر الرسم
drawتحديد بالإطار وبالحبل، ومقابض للتحجيم والتدوير، وأنماط لكل أداة، وتراجع وإعادة، واستيراد GeoJSON وتصديره. -
بيانات حيّة تتبع نافذة العرض
useLiveData()إعادة جلب بحدود المستطيل مع تحرّك الكاميرا، إضافة إلى تحديثات آنية. -
رموز MIL-STD-2525D
استيراد ديناميكيتُحمَّل حزمة الرموز البالغة 9 ميغابايت عند الطلب فقط — ولا تدخل أبدًا في حزمة لا تعرض أي رمز. -
سمة وتسميات بأنواع محدّدة
theme · labelsفاتحة وداكنة، مع احترامprefers-reduced-motion، وقابلة للترجمة بالكامل. لا نصّ ولا قيمة مكتوبة في الشيفرة.
أثناء العمل
الأدوات وهي تشتغل
كل لقطة أدناه مأخوذة من العرض الذي يمكنك فتحه أعلاه — ولا نموذج تصميمي واحد.
-
الرسم والتحديدمقابض تحجيم وتدوير، ولوحة تحديد حيّة، وتراجع وإعادة
-
لوحة MIL-STD-2525Dصديق، معادٍ، محايد، مجهول — والحزمة تُحمَّل عند الطلب
-
الفهرس والمصادرتُفعّل مصدرًا، فتصل 252 نقطة وتُعاد التجمّعات إلى التشكّل
-
السمة الفاتحةإعداد واحد — وتتبعه الواجهة كلّها، بما فيها الخريطة
البداية السريعة
خريطة بتجمّعات في اثني عشر سطرًا
import { Map, markersLayer, type MarkerData } from '@pasquelin/map3d'
type Alert = { title: string }
const alerts: MarkerData<Alert>[] = [
{ id: 1, type: 'critical', position: { lat: 48.8566, lng: 2.3522 }, title: 'Intrusion', data: { title: 'Intrusion' } },
{ id: 2, type: 'info', position: { lat: 48.8606, lng: 2.3376 }, title: 'Patrol', data: { title: 'Patrol' } },
]
export function App() {
return (
<div style={{ height: '100vh' }}>
<Map
center={{ lat: 48.8566, lng: 2.3522 }}
zoom={13}
layers={[markersLayer<Alert>({ points: alerts, cluster: { enabled: true } })]}
/>
</div>
)
}
الإضافات الاختيارية — IGN Géoplateforme وWindy ومخطّطات الطوابق الداخلية — تعيش في مستودع منفصل، ويمكنك كتابة إضافتك بواسطة واجهة الإضافات.