diff --git a/README.md b/README.md index 5338037..57d50c1 100644 --- a/README.md +++ b/README.md @@ -45,9 +45,21 @@ A complete self-hosted mapping platform prototype for Jordan, built with OpenStr - **GraphHopper Latest** - **MapLibre GL JS** +## 🎖️ البوابات السيادية والعسكرية / Sovereign & Defense Portals + +- **بوابة المنظومة العسكرية والتوجيه التكتيكي الميداني (المعتمد للجهات العسكرية)**: + `https://map-saas.intaleqapp.com/sovereign-tactical-landing.html` +- **مركز القيادة التفاعلي (رَصْد)**: + `https://map-saas.intaleqapp.com/sovereign-command.html` +- **المنظومة التكتيكية الميدانية الحية**: + `https://map-saas.intaleqapp.com/#tactical` +- **وثيقة الإيجاز الأمني والمعمارية التقنية (المركز الجغرافي الملكي)**: + `https://map-saas.intaleqapp.com/security_brief_rjgc.html` + ## 📝 Arabic Comments / ملاحظات باللغة العربية -تم تصميم هذا النظام ليكون نواة لمنصة خرائط تجارية تدعم تطبيقات التوصيل والنقل الذكي في الأردن، مع التركيز على استيعاب بيانات الموقع اللحظية للسائقين كل 3 ثواني ومعالجتها مكانياً. +تم تصميم هذا النظام ليكون نواة لمنصة خرائط تجارية وسيادية تدعم تطبيقات التوصيل والنقل الذكي والأنظمة التكتيكية في الأردن، مع التركيز على استيعاب بيانات الموقع اللحظية للسائقين كل 3 ثواني ومعالجتها مكانياً واستقلالية العمل 100% بدون إنترنت. ## ⚠️ Limitations / القيود الحالية - Does not include full Map Matching for traffic light delay logic (Phase 2). - Requires manual download of MBTiles for high-performance tile serving in production. + diff --git a/apps/dashboard/data/landmarks_mena_expanded.json b/apps/dashboard/data/landmarks_mena_expanded.json index 21dbf6e..7b7a82e 100644 --- a/apps/dashboard/data/landmarks_mena_expanded.json +++ b/apps/dashboard/data/landmarks_mena_expanded.json @@ -1,23 +1,4044 @@ [ { - "id": 1, - "slug": "petra-visitor-center", - "name_ar": "البترا - مركز الزوار والخزنة والسيق", - "name_en": "Petra - Visitor Center & Treasury (Al-Khazneh)", - "category": "archaeological_site", - "era": "Nabataean", - "narrative_ar": "عاصمة مملكة الأنباط المحفورة في الصخر الوردي، إحدى عجائب الدنيا السبع الحديثة، تضم السيق الخلاب، الخزنة، الدير، والشارع المعمد.", - "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Treasury_petra_crop.jpeg/1200px-Treasury_petra_crop.jpeg", - "governorate": "Maan", + "id": 101, + "slug": "ajloun-castle-alrabad", + "name_ar": "قلعة عجلون (قلعة الربض)", + "name_en": "Ajloun Castle", "country": "الأردن", + "country_en": "Jordan", + "governorate": "عجلون", + "category": "monument", + "tier": "Tier-1 Sovereign Anchor", + "era": "الأيوبي / Ayyubid", + "narrative_ar": "شيدها القائد عز الدين أسامة أحد قادة صلاح الدين الأيوبي عام 1184م على قمة جبل عوف لتكون حصناً منيعاً لمراقبة طرق التجارة وحماية مناجم الحديد وتأمين خطوط الإمداد الإسلامية في مواجهة الصليبيين.", + "narrative": "شيدها القائد عز الدين أسامة أحد قادة صلاح الدين الأيوبي عام 1184م على قمة جبل عوف لتكون حصناً منيعاً لمراقبة طرق التجارة وحماية مناجم الحديد وتأمين خطوط الإمداد الإسلامية في مواجهة الصليبيين.", + "image_url": "https://cdn.intaleqapp.com/heritage/images/jordan/ajloun_castle.jpg", + "image": "https://cdn.intaleqapp.com/heritage/images/jordan/ajloun_castle.jpg", + "centroid": { + "lat": 32.32522, + "lng": 35.72734 + }, + "gate": { + "lat": 32.32545, + "lng": 35.72779 + }, + "parking": { + "lat": 32.32817, + "lng": 35.72722 + }, + "ticket": { + "lat": 32.3283, + "lng": 35.72775 + }, "coordinates": { "centroid": { - "lat": 30.3285, - "lng": 35.4444 + "lat": 32.32522, + "lng": 35.72734 }, "access_gate": { - "lat": 30.3256, - "lng": 35.4798 + "lat": 32.32545, + "lng": 35.72779 + }, + "parking": { + "lat": 32.32817, + "lng": 35.72722 + }, + "ticket_office": { + "lat": 32.3283, + "lng": 35.72775 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار / وزارة الثقافة (منصة تراثي)", + "metadata": { + "country": "الأردن", + "curator": "وزارة السياحة والآثار / وزارة الثقافة (منصة تراثي)", + "has_visitor_center": true, + "trail_name": "مسار عجلون - درب الزيتون 1 (مهراس)", + "turathi_trail_id": 4, + "turathi_stop_id": 14, + "turathi_trail_name": "مسار عجلون - درب الزيتون (1) مهراس" + }, + "site_polygon": [ + [ + 35.72688, + 32.32551 + ], + [ + 35.72741, + 32.32572 + ], + [ + 35.72792, + 32.32548 + ], + [ + 35.72765, + 32.32495 + ], + [ + 35.7271, + 32.32488 + ], + [ + 35.72688, + 32.32551 + ] + ], + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 0.5, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 3, + "currency": "JOD" + } + ] + } + }, + { + "id": 102, + "slug": "petra-archaeological-park", + "name_ar": "محمية البترا الأثرية", + "name_en": "Petra Archaeological Park", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "archaeological_park", + "tier": "Tier-1 Sovereign Anchor", + "era": "النبطي / Nabataean", + "narrative_ar": "عاصمة المملكة النبطية المنحوتة في الصخر الوردي، أسسها الأنباط في القرن الرابع قبل الميلاد لتتحول إلى عاصمة تجارية وإمبراطورية تحكمت في مسارات القوافل وطورت منظومات هيدروليكية بارعة لحصاد مياه الأمطار في البيئات الجافة.", + "narrative": "عاصمة المملكة النبطية المنحوتة في الصخر الوردي، أسسها الأنباط في القرن الرابع قبل الميلاد لتتحول إلى عاصمة تجارية وإمبراطورية تحكمت في مسارات القوافل وطورت منظومات هيدروليكية بارعة لحصاد مياه الأمطار في البيئات الجافة.", + "image_url": "https://cdn.intaleqapp.com/heritage/images/jordan/petra_treasury.jpg", + "image": "https://cdn.intaleqapp.com/heritage/images/jordan/petra_treasury.jpg", + "centroid": { + "lat": 30.32888, + "lng": 35.44222 + }, + "gate": { + "lat": 30.32485, + "lng": 35.47055 + }, + "parking": { + "lat": 30.3262, + "lng": 35.4725 + }, + "ticket": { + "lat": 30.32525, + "lng": 35.4698 + }, + "coordinates": { + "centroid": { + "lat": 30.32888, + "lng": 35.44222 + }, + "access_gate": { + "lat": 30.32485, + "lng": 35.47055 + }, + "parking": { + "lat": 30.3262, + "lng": 35.4725 + }, + "ticket_office": { + "lat": 30.32525, + "lng": 35.4698 + } + }, + "is_verified": true, + "curator": "سلطة إقليم البترا التنموي السياحي / وزارة السياحة والآثار", + "metadata": { + "country": "الأردن", + "curator": "سلطة إقليم البترا التنموي السياحي / وزارة السياحة والآثار", + "has_visitor_center": true, + "trail_name": "درب الأردن: قطاع ضانا إلى البترا - المسار الرئيسي للسيق" + }, + "site_polygon": [ + [ + 35.432, + 30.334 + ], + [ + 35.45, + 30.342 + ], + [ + 35.475, + 30.33 + ], + [ + 35.465, + 30.315 + ], + [ + 35.435, + 30.318 + ], + [ + 35.432, + 30.334 + ] + ], + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 1, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 50, + "currency": "JOD" + } + ] + } + }, + { + "id": 103, + "slug": "amman-citadel-jabal-al-qalaa", + "name_ar": "جبل القلعة (ربة عمون)", + "name_en": "Amman Citadel", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العاصمة", + "category": "monument", + "tier": "Tier-1 Sovereign Anchor", + "era": "العموني والروماني والأموي / Multi-period (Ammonite, Roman, Umayyad)", + "narrative_ar": "أحد أقدم التلال المأهولة عالمياً عبر أكثر من سبعة آلاف عام؛ شهد نشأة مملكة عمون القديمة باسم ربة عمون، ثم تحول إلى أكروبوليس لمدينة فيلادلفيا الرومانية محتضناً معبد هرقل، وصولاً إلى العصر الإسلامي الأموي ببناء القصر والمسجد وقاعة الاستقبال ذات القبة الخشبية المميزة.", + "narrative": "أحد أقدم التلال المأهولة عالمياً عبر أكثر من سبعة آلاف عام؛ شهد نشأة مملكة عمون القديمة باسم ربة عمون، ثم تحول إلى أكروبوليس لمدينة فيلادلفيا الرومانية محتضناً معبد هرقل، وصولاً إلى العصر الإسلامي الأموي ببناء القصر والمسجد وقاعة الاستقبال ذات القبة الخشبية المميزة.", + "image_url": "https://cdn.intaleqapp.com/heritage/images/jordan/amman_citadel.jpg", + "image": "https://cdn.intaleqapp.com/heritage/images/jordan/amman_citadel.jpg", + "centroid": { + "lat": 31.9545, + "lng": 35.9352 + }, + "gate": { + "lat": 31.9538, + "lng": 35.93485 + }, + "parking": { + "lat": 31.9535, + "lng": 35.9358 + }, + "ticket": { + "lat": 31.9537, + "lng": 35.9351 + }, + "coordinates": { + "centroid": { + "lat": 31.9545, + "lng": 35.9352 + }, + "access_gate": { + "lat": 31.9538, + "lng": 35.93485 + }, + "parking": { + "lat": 31.9535, + "lng": 35.9358 + }, + "ticket_office": { + "lat": 31.9537, + "lng": 35.9351 + } + }, + "is_verified": true, + "curator": "دائرة الآثار العامة / وزارة الثقافة (منصة تراثي)", + "metadata": { + "country": "الأردن", + "curator": "دائرة الآثار العامة / وزارة الثقافة (منصة تراثي)", + "has_visitor_center": true, + "trail_name": "مسار التراث والوسط التاريخي لعمان" + }, + "site_polygon": [ + [ + 35.9338, + 31.9562 + ], + [ + 35.9365, + 31.956 + ], + [ + 35.937, + 31.9535 + ], + [ + 35.9345, + 31.9528 + ], + [ + 35.9332, + 31.954 + ], + [ + 35.9338, + 31.9562 + ] + ], + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 0.5, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 3, + "currency": "JOD" + } + ] + } + }, + { + "id": 104, + "slug": "jerash-ancient-gerasa", + "name_ar": "مدينة جرش الأثرية (جراسا القديمة)", + "name_en": "Jerash Archaeological City", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "جرش", + "category": "archaeological_park", + "tier": "Tier-1 Sovereign Anchor", + "era": "الروماني والبيزنطي / Greco-Roman & Byzantine", + "narrative_ar": "إحدى مدن حلف الديكابوليس الروماني العشر، وتعد من أفضل المدن الرومانية المحفوظة معمارياً في الشرق؛ تمتاز بشارع الأعمدة والكاردو ماكسيموس المعبد بالحجارة الأصلية، والساحة الإهليلجية البيضاوية الفريدة، والمسارح ومجمع معبد أرتميس وزيوس المعبر عن ازدهار التحضر الإمبراطوري القديم.", + "narrative": "إحدى مدن حلف الديكابوليس الروماني العشر، وتعد من أفضل المدن الرومانية المحفوظة معمارياً في الشرق؛ تمتاز بشارع الأعمدة والكاردو ماكسيموس المعبد بالحجارة الأصلية، والساحة الإهليلجية البيضاوية الفريدة، والمسارح ومجمع معبد أرتميس وزيوس المعبر عن ازدهار التحضر الإمبراطوري القديم.", + "image_url": "https://cdn.intaleqapp.com/heritage/images/jordan/jerash_oval_plaza.jpg", + "image": "https://cdn.intaleqapp.com/heritage/images/jordan/jerash_oval_plaza.jpg", + "centroid": { + "lat": 32.2801, + "lng": 35.8912 + }, + "gate": { + "lat": 32.27255, + "lng": 35.8895 + }, + "parking": { + "lat": 32.2718, + "lng": 35.8925 + }, + "ticket": { + "lat": 32.2721, + "lng": 35.8912 + }, + "coordinates": { + "centroid": { + "lat": 32.2801, + "lng": 35.8912 + }, + "access_gate": { + "lat": 32.27255, + "lng": 35.8895 + }, + "parking": { + "lat": 32.2718, + "lng": 35.8925 + }, + "ticket_office": { + "lat": 32.2721, + "lng": 35.8912 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار / دائرة الآثار العامة", + "metadata": { + "country": "الأردن", + "curator": "وزارة السياحة والآثار / دائرة الآثار العامة", + "has_visitor_center": true, + "trail_name": "مسار أعمدة الديكابوليس الشمالي", + "turathi_trail_id": 10018, + "turathi_stop_id": 10016, + "turathi_trail_name": "مسار جرش" + }, + "site_polygon": [ + [ + 35.888, + 32.2865 + ], + [ + 35.896, + 32.2855 + ], + [ + 35.8945, + 32.275 + ], + [ + 35.8915, + 32.2705 + ], + [ + 35.886, + 32.273 + ], + [ + 35.888, + 32.2865 + ] + ], + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 0.5, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 10, + "currency": "JOD" + } + ] + } + }, + { + "id": 105, + "slug": "karak-castle-al-karak", + "name_ar": "قلعة الكرك", + "name_en": "Karak Castle", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "الكرك", + "category": "monument", + "tier": "Tier-1 Sovereign Anchor", + "era": "الصليبي والأيوبي والمملوكي / Crusader, Ayyubid & Mamluk", + "narrative_ar": "حصن عسكري شاهق يتربع على الطرف الجنوبي لهضبة مؤاب التاريخية، بناه الصليبيون عام 1142م وطوره السلاطين الأيوبيون والمماليك بأبراج دفاعية ضخمة وممرات مقببة تحت الأرض؛ لمراقبة قوافل طريق الملوك وحماية طرق القوافل الحجازية وتأمين الحدود الجنوبية لبلاد الشام.", + "narrative": "حصن عسكري شاهق يتربع على الطرف الجنوبي لهضبة مؤاب التاريخية، بناه الصليبيون عام 1142م وطوره السلاطين الأيوبيون والمماليك بأبراج دفاعية ضخمة وممرات مقببة تحت الأرض؛ لمراقبة قوافل طريق الملوك وحماية طرق القوافل الحجازية وتأمين الحدود الجنوبية لبلاد الشام.", + "image_url": "https://cdn.intaleqapp.com/heritage/images/jordan/karak_castle.jpg", + "image": "https://cdn.intaleqapp.com/heritage/images/jordan/karak_castle.jpg", + "centroid": { + "lat": 31.1812, + "lng": 35.7018 + }, + "gate": { + "lat": 31.1824, + "lng": 35.7022 + }, + "parking": { + "lat": 31.1832, + "lng": 35.7031 + }, + "ticket": { + "lat": 31.1826, + "lng": 35.7025 + }, + "coordinates": { + "centroid": { + "lat": 31.1812, + "lng": 35.7018 + }, + "access_gate": { + "lat": 31.1824, + "lng": 35.7022 + }, + "parking": { + "lat": 31.1832, + "lng": 35.7031 + }, + "ticket_office": { + "lat": 31.1826, + "lng": 35.7025 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار / دائرة الآثار العامة", + "metadata": { + "country": "الأردن", + "curator": "وزارة السياحة والآثار / دائرة الآثار العامة", + "has_visitor_center": true, + "trail_name": "درب الأردن: قطاع وادي الموجب إلى الكرك" + }, + "site_polygon": [ + [ + 35.7012, + 31.1828 + ], + [ + 35.7027, + 31.1831 + ], + [ + 35.7023, + 31.1802 + ], + [ + 35.7011, + 31.1795 + ], + [ + 35.7005, + 31.1815 + ], + [ + 35.7012, + 31.1828 + ] + ], + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 0.5, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 3, + "currency": "JOD" + } + ] + } + }, + { + "id": 106, + "slug": "umm-el-jimal-black-gem", + "name_ar": "أم الجمال (واحة البازلت الأسود)", + "name_en": "Umm el-Jimal", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "المفرق", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "النبطي والروماني والأموي / Nabataean, Roman, Byzantine & Umayyad", + "narrative_ar": "حاضرة بازلتية عريقة في سهل حوران أدرجت على قائمة التراث العالمي لليونسكو عام 2024؛ تجسد عبقرية الاستيطان الريفي وإدارة الموارد المائية الشحيحة من خلال الخزانات وبرك الحصاد المائي، فضلاً عن تعايش حضارات النبط والرومان والأمويين التي شيدت مبانيها بحجارة البازلت البركاني الأسود.", + "narrative": "حاضرة بازلتية عريقة في سهل حوران أدرجت على قائمة التراث العالمي لليونسكو عام 2024؛ تجسد عبقرية الاستيطان الريفي وإدارة الموارد المائية الشحيحة من خلال الخزانات وبرك الحصاد المائي، فضلاً عن تعايش حضارات النبط والرومان والأمويين التي شيدت مبانيها بحجارة البازلت البركاني الأسود.", + "image_url": "https://cdn.intaleqapp.com/heritage/images/jordan/umm_el_jimal.jpg", + "image": "https://cdn.intaleqapp.com/heritage/images/jordan/umm_el_jimal.jpg", + "centroid": { + "lat": 32.3292, + "lng": 36.3688 + }, + "gate": { + "lat": 32.3278, + "lng": 36.3675 + }, + "parking": { + "lat": 32.3272, + "lng": 36.367 + }, + "ticket": { + "lat": 32.3275, + "lng": 36.3673 + }, + "coordinates": { + "centroid": { + "lat": 32.3292, + "lng": 36.3688 + }, + "access_gate": { + "lat": 32.3278, + "lng": 36.3675 + }, + "parking": { + "lat": 32.3272, + "lng": 36.367 + }, + "ticket_office": { + "lat": 32.3275, + "lng": 36.3673 + } + }, + "is_verified": true, + "curator": "دائرة الآثار العامة / بلدية أم الجمال / اليونسكو", + "metadata": { + "country": "الأردن", + "curator": "دائرة الآثار العامة / بلدية أم الجمال / اليونسكو", + "has_visitor_center": true, + "trail_name": "مسار واحات البازلت والبادية الشمالية" + }, + "site_polygon": [ + [ + 36.3645, + 32.3335 + ], + [ + 36.3725, + 32.334 + ], + [ + 36.3735, + 32.326 + ], + [ + 36.366, + 32.325 + ], + [ + 36.3635, + 32.328 + ], + [ + 36.3645, + 32.3335 + ] + ], + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 0.5, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 3, + "currency": "JOD" + } + ] + } + }, + { + "id": 107, + "slug": "umm-qais-gadara", + "name_ar": "أم قيس (جدارا القديمة)", + "name_en": "Umm Qais", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "archaeological_park", + "tier": "Tier-1 Sovereign Anchor", + "era": "الهلنستي والروماني والعثماني / Hellenistic, Roman & Late Ottoman", + "narrative_ar": "درة مدن حلف الديكابوليس المشرفة استراتيجياً على بحيرة طبريا ومرتفعات الجولان ووادي اليرموك؛ عُرفت بمدينة الفلاسفة والشعراء كأرابيوس وميليغر، وتمتاز بانسجام آثارها الرومانية المبنية بحجر البازلت الأسود مع بيوت القرية التراثية العثمانية المشيدة فوق الموقع الأثري.", + "narrative": "درة مدن حلف الديكابوليس المشرفة استراتيجياً على بحيرة طبريا ومرتفعات الجولان ووادي اليرموك؛ عُرفت بمدينة الفلاسفة والشعراء كأرابيوس وميليغر، وتمتاز بانسجام آثارها الرومانية المبنية بحجر البازلت الأسود مع بيوت القرية التراثية العثمانية المشيدة فوق الموقع الأثري.", + "image_url": "https://cdn.intaleqapp.com/heritage/images/jordan/umm_qais.jpg", + "image": "https://cdn.intaleqapp.com/heritage/images/jordan/umm_qais.jpg", + "centroid": { + "lat": 32.6535, + "lng": 35.6845 + }, + "gate": { + "lat": 32.6542, + "lng": 35.6828 + }, + "parking": { + "lat": 32.6548, + "lng": 35.6815 + }, + "ticket": { + "lat": 32.6544, + "lng": 35.6822 + }, + "coordinates": { + "centroid": { + "lat": 32.6535, + "lng": 35.6845 + }, + "access_gate": { + "lat": 32.6542, + "lng": 35.6828 + }, + "parking": { + "lat": 32.6548, + "lng": 35.6815 + }, + "ticket_office": { + "lat": 32.6544, + "lng": 35.6822 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار / وزارة الثقافة (منصة تراثي)", + "metadata": { + "country": "الأردن", + "curator": "وزارة السياحة والآثار / وزارة الثقافة (منصة تراثي)", + "has_visitor_center": true, + "trail_name": "درب الأردن: قطاع أم قيس إلى وادي زقلاب" + }, + "site_polygon": [ + [ + 35.679, + 32.657 + ], + [ + 35.689, + 32.6565 + ], + [ + 35.688, + 32.6505 + ], + [ + 35.682, + 32.6495 + ], + [ + 35.6785, + 32.6525 + ], + [ + 35.679, + 32.657 + ] + ], + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 0.5, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 3, + "currency": "JOD" + } + ] + } + }, + { + "id": 108, + "slug": "qasr-amra-desert-castle", + "name_ar": "قصر عمرة الصحراوي", + "name_en": "Qasr Amra", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "الزرقاء", + "category": "monument", + "tier": "Tier-1 Sovereign Anchor", + "era": "الأموي / Umayyad", + "narrative_ar": "قصر واستراحة بادية أموية شيدها الخليفة الوليد بن يزيد في بدايات القرن الثامن الميلادي في وادي البطم؛ أدرج كأول موقع تراث عالمي في الأردن عام 1985 لما يحتويه حمامه الملكي وقاعته من جداريات وفريسكو فنية نادرة تصور مشاهد الصيد والمهن والأبراج السماوية وملوك العالم آنذاك.", + "narrative": "قصر واستراحة بادية أموية شيدها الخليفة الوليد بن يزيد في بدايات القرن الثامن الميلادي في وادي البطم؛ أدرج كأول موقع تراث عالمي في الأردن عام 1985 لما يحتويه حمامه الملكي وقاعته من جداريات وفريسكو فنية نادرة تصور مشاهد الصيد والمهن والأبراج السماوية وملوك العالم آنذاك.", + "image_url": "https://cdn.intaleqapp.com/heritage/images/jordan/qasr_amra.jpg", + "image": "https://cdn.intaleqapp.com/heritage/images/jordan/qasr_amra.jpg", + "centroid": { + "lat": 31.8019, + "lng": 36.5816 + }, + "gate": { + "lat": 31.8023, + "lng": 36.5812 + }, + "parking": { + "lat": 31.8028, + "lng": 36.5805 + }, + "ticket": { + "lat": 31.8025, + "lng": 36.5808 + }, + "coordinates": { + "centroid": { + "lat": 31.8019, + "lng": 36.5816 + }, + "access_gate": { + "lat": 31.8023, + "lng": 36.5812 + }, + "parking": { + "lat": 31.8028, + "lng": 36.5805 + }, + "ticket_office": { + "lat": 31.8025, + "lng": 36.5808 + } + }, + "is_verified": true, + "curator": "دائرة الآثار العامة / اليونسكو", + "metadata": { + "country": "الأردن", + "curator": "دائرة الآثار العامة / اليونسكو", + "has_visitor_center": true, + "trail_name": "مسار القصور الأموية في البادية الشرقية" + }, + "site_polygon": [ + [ + 36.5795, + 31.8035 + ], + [ + 36.5835, + 31.8038 + ], + [ + 36.584, + 31.8005 + ], + [ + 36.58, + 31.7995 + ], + [ + 36.5788, + 31.8015 + ], + [ + 36.5795, + 31.8035 + ] + ], + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 0.5, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 3, + "currency": "JOD" + } + ] + } + }, + { + "id": 109, + "slug": "al-maghtas-baptism-site", + "name_ar": "موقع المعمودية (المغطس - بيت عنيا عبر الأردن)", + "name_en": "Baptism Site (Bethany Beyond the Jordan)", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "البلقاء", + "category": "heritage_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "الروماني والبيزنطي / Roman & Byzantine", + "narrative_ar": "الموقع الديني والتاريخي العالمي على الضفة الشرقية لنهر الأردن حيث انطلقت بواكير الدعوة المسيحية بتعميد السيد المسيح على يد يوحنا المعمدان؛ يشتمل على مجمعات كنائس وأديرة وكهوف نسك وبرك تعميد تعود للعصور الرومانية والبيزنطية وسط الطبيعة النهرية لغور الأردن.", + "narrative": "الموقع الديني والتاريخي العالمي على الضفة الشرقية لنهر الأردن حيث انطلقت بواكير الدعوة المسيحية بتعميد السيد المسيح على يد يوحنا المعمدان؛ يشتمل على مجمعات كنائس وأديرة وكهوف نسك وبرك تعميد تعود للعصور الرومانية والبيزنطية وسط الطبيعة النهرية لغور الأردن.", + "image_url": "https://cdn.intaleqapp.com/heritage/images/jordan/al_maghtas.jpg", + "image": "https://cdn.intaleqapp.com/heritage/images/jordan/al_maghtas.jpg", + "centroid": { + "lat": 31.8375, + "lng": 35.5502 + }, + "gate": { + "lat": 31.8398, + "lng": 35.5645 + }, + "parking": { + "lat": 31.8405, + "lng": 35.5662 + }, + "ticket": { + "lat": 31.8401, + "lng": 35.5651 + }, + "coordinates": { + "centroid": { + "lat": 31.8375, + "lng": 35.5502 + }, + "access_gate": { + "lat": 31.8398, + "lng": 35.5645 + }, + "parking": { + "lat": 31.8405, + "lng": 35.5662 + }, + "ticket_office": { + "lat": 31.8401, + "lng": 35.5651 + } + }, + "is_verified": true, + "curator": "هيئة موقع المغطس / وزارة السياحة والآثار / اليونسكو", + "metadata": { + "country": "الأردن", + "curator": "هيئة موقع المغطس / وزارة السياحة والآثار / اليونسكو", + "has_visitor_center": true, + "trail_name": "مسار الحج الديني المقدس ووادي الأردن" + }, + "site_polygon": [ + [ + 35.545, + 31.845 + ], + [ + 35.57, + 31.848 + ], + [ + 35.572, + 31.83 + ], + [ + 35.548, + 31.828 + ], + [ + 35.542, + 31.835 + ], + [ + 35.545, + 31.845 + ] + ], + "admission": { + "is_ticketed": true, + "jordan_pass_included": false, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 3, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 12, + "currency": "JOD" + } + ] + } + }, + { + "id": 110, + "slug": "shobak-castle-montreal", + "name_ar": "قلعة الشوبك (مونتريال)", + "name_en": "Shobak Castle", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "monument", + "tier": "Tier-1 Sovereign Anchor", + "era": "الصليبي والأيوبي والمملوكي / Crusader, Ayyubid & Mamluk", + "narrative_ar": "أول معقل عسكري صليبي شيده بلدوين الأول عام 1115م جنوب بلاد الشام على قمة جبل مخروطي استراتيجي مشرف على وادي عربة، استعادها صلاح الدين الأيوبي عام 1189م بعد حصار شهير، وتتميز بمنشآتها العسكرية المحفورة وأنفاقها وبئرها الصخري المنحدر بـ 375 درجة لتأمين المياه أثناء الحصار.", + "narrative": "أول معقل عسكري صليبي شيده بلدوين الأول عام 1115م جنوب بلاد الشام على قمة جبل مخروطي استراتيجي مشرف على وادي عربة، استعادها صلاح الدين الأيوبي عام 1189م بعد حصار شهير، وتتميز بمنشآتها العسكرية المحفورة وأنفاقها وبئرها الصخري المنحدر بـ 375 درجة لتأمين المياه أثناء الحصار.", + "image_url": "https://cdn.intaleqapp.com/heritage/images/jordan/shobak_castle.jpg", + "image": "https://cdn.intaleqapp.com/heritage/images/jordan/shobak_castle.jpg", + "centroid": { + "lat": 30.5317, + "lng": 35.5611 + }, + "gate": { + "lat": 30.5322, + "lng": 35.5618 + }, + "parking": { + "lat": 30.5331, + "lng": 35.563 + }, + "ticket": { + "lat": 30.5327, + "lng": 35.5623 + }, + "coordinates": { + "centroid": { + "lat": 30.5317, + "lng": 35.5611 + }, + "access_gate": { + "lat": 30.5322, + "lng": 35.5618 + }, + "parking": { + "lat": 30.5331, + "lng": 35.563 + }, + "ticket_office": { + "lat": 30.5327, + "lng": 35.5623 + } + }, + "is_verified": true, + "curator": "دائرة الآثار العامة / وزارة السياحة والآثار", + "metadata": { + "country": "الأردن", + "curator": "دائرة الآثار العامة / وزارة السياحة والآثار", + "has_visitor_center": true, + "trail_name": "درب الأردن: قطاع الشوبك إلى ضانا" + }, + "site_polygon": [ + [ + 35.5598, + 30.5332 + ], + [ + 35.5625, + 30.5335 + ], + [ + 35.5622, + 30.5305 + ], + [ + 35.5601, + 30.5298 + ], + [ + 35.5589, + 30.5312 + ], + [ + 35.5598, + 30.5332 + ] + ], + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 0.5, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 3, + "currency": "JOD" + } + ] + } + }, + { + "id": 201, + "slug": "turathi-10055", + "name_ar": "ذيبان", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "مادبا", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "عرفت عند الموآبيين بـ (ديبون) وهي عاصمة مملكة مؤاب، تبعد ما يقرب من 70 كيلومتراً جنوب مدينة عمان. تشتهر بسهولها الواسعة، والسيول، وجبالها الشامخة ويعتمد سكانها على الزراعة، وتربية المواشي.", + "narrative": "عرفت عند الموآبيين بـ (ديبون) وهي عاصمة مملكة مؤاب، تبعد ما يقرب من 70 كيلومتراً جنوب مدينة عمان. تشتهر بسهولها الواسعة، والسيول، وجبالها الشامخة ويعتمد سكانها على الزراعة، وتربية المواشي.", + "image_url": "https://turathi.jo/api/api/File/c1d1878e-7488-4f2d-9374-2981c09d4c12.jpg", + "image": "https://turathi.jo/api/api/File/c1d1878e-7488-4f2d-9374-2981c09d4c12.jpg", + "centroid": { + "lat": 31.49799, + "lng": 35.78136 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 31.49799, + "lng": 35.78136 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10030, + "trail_name": "مسار مادبا", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 202, + "slug": "turathi-10056", + "name_ar": "مركز زوار مادبا", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "مادبا", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "أفتتح المركز في عام 2001، ويقوم على مجموعة من الغرف التراثية القديمة التي بنيت مطلع القرن الماضي كانت تسكنه عائلة البجالي، وتم استملاكه من وزارة السياحة والآثار وإعادة ترميمه لإقامة مركز زوار فريد من نوعه بالمنطقة لتقديم الخدمات الضرورية لزوار مادبا وليصبح نقطة انطلاق الزوار إلى كافة المواقع السياحية والأثرية في المدينة بالإضافة إلى إقامة العديد من النشاطات السياحية والفنية لأهالي مادبا. يروي المركز قصة مدينة مادبا وحكايتها الممتدة لآلاف السنين، التي جعلت من هذه المدينة محل إعجاب لكل من زارها، وهذا ما أهلها لحصد الألقاب والجوائز، كان آخرها اختيارها عاصمة للسياحة العربية لعام 2022.", + "narrative": "أفتتح المركز في عام 2001، ويقوم على مجموعة من الغرف التراثية القديمة التي بنيت مطلع القرن الماضي كانت تسكنه عائلة البجالي، وتم استملاكه من وزارة السياحة والآثار وإعادة ترميمه لإقامة مركز زوار فريد من نوعه بالمنطقة لتقديم الخدمات الضرورية لزوار مادبا وليصبح نقطة انطلاق الزوار إلى كافة المواقع السياحية والأثرية في المدينة بالإضافة إلى إقامة العديد من النشاطات السياحية والفنية لأهالي مادبا. يروي المركز قصة مدينة مادبا وحكايتها الممتدة لآلاف السنين، التي جعلت من هذه المدينة محل إعجاب لكل من زارها، وهذا ما أهلها لحصد الألقاب والجوائز، كان آخرها اختيارها عاصمة للسياحة العربية لعام 2022.", + "image_url": "https://turathi.jo/api/api/File/3550805c-c8b1-4cc4-8ad0-00da0c7c49e2.JPG", + "image": "https://turathi.jo/api/api/File/3550805c-c8b1-4cc4-8ad0-00da0c7c49e2.JPG", + "centroid": { + "lat": 31.71644, + "lng": 35.79623 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 31.71644, + "lng": 35.79623 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10030, + "trail_name": "مسار مادبا", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 203, + "slug": "turathi-10057", + "name_ar": "بيت جدودنا", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "مادبا", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يتكون من حجرتين كانتا في الماضي مسكن للأسرة ومكاناً لتخزين الحبوب كالقمح والشعير، وعدد من النوافذ والأبواب الخشبية. يعتبر من المواقع التاريخية والتراثية في قرية لب في لواء ذيبان، وقد تم إنشاؤه سنة 1940م، كانت تعود ملكية البيت للسيد عوده حامد الفقهاء، ثم تملكه السيد نايل سلمان الهروط الذي عمل على ترميمه وصيانته؛ أضفى عليه طابعاً تراثياً نراه في كل زاوية ليكون منطقة جذب سياحية في القرية. وأصبح مكاناً لإقامة الفعاليات الثقافية والفنية والأمسيات الشعرية والمعارض والبازارات، يؤمه الزائرون من كل أنحاء العالم.", + "narrative": "يتكون من حجرتين كانتا في الماضي مسكن للأسرة ومكاناً لتخزين الحبوب كالقمح والشعير، وعدد من النوافذ والأبواب الخشبية. يعتبر من المواقع التاريخية والتراثية في قرية لب في لواء ذيبان، وقد تم إنشاؤه سنة 1940م، كانت تعود ملكية البيت للسيد عوده حامد الفقهاء، ثم تملكه السيد نايل سلمان الهروط الذي عمل على ترميمه وصيانته؛ أضفى عليه طابعاً تراثياً نراه في كل زاوية ليكون منطقة جذب سياحية في القرية. وأصبح مكاناً لإقامة الفعاليات الثقافية والفنية والأمسيات الشعرية والمعارض والبازارات، يؤمه الزائرون من كل أنحاء العالم.", + "image_url": "https://turathi.jo/api/api/File/b8077dcc-ee03-4d0a-8ef0-338d9bebccce.jpg", + "image": "https://turathi.jo/api/api/File/b8077dcc-ee03-4d0a-8ef0-338d9bebccce.jpg", + "centroid": { + "lat": 31.71645, + "lng": 35.79314 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 31.71645, + "lng": 35.79314 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10030, + "trail_name": "مسار مادبا", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 204, + "slug": "turathi-10058", + "name_ar": "خربة عطروز الأثرية", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "مادبا", + "category": "archaeological_site", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "خربة عطروز الأثرية\r\nتقع على إطلالة رائعة من البحر الميت بمحاذاة الطريق المؤدي من مادبا إلى قلعة مكاور. التسمية عطروز حكاية خيالية تراثية يتوارثها السكان المحليون تفيد بأن مملكة الجن توجد في هذه المنطقة منسوبة إلى (عطا) ملك الجن و(روز) ملكة الجن أما الباحثون والآثاريون فيربطون الاسم مع الآلهة النبطية عطار جاتس.", + "narrative": "خربة عطروز الأثرية\r\nتقع على إطلالة رائعة من البحر الميت بمحاذاة الطريق المؤدي من مادبا إلى قلعة مكاور. التسمية عطروز حكاية خيالية تراثية يتوارثها السكان المحليون تفيد بأن مملكة الجن توجد في هذه المنطقة منسوبة إلى (عطا) ملك الجن و(روز) ملكة الجن أما الباحثون والآثاريون فيربطون الاسم مع الآلهة النبطية عطار جاتس.", + "image_url": "https://turathi.jo/api/api/File/3b2b3bbb-14cd-41f1-8fc4-ee2d73ac4576.jpg", + "image": "https://turathi.jo/api/api/File/3b2b3bbb-14cd-41f1-8fc4-ee2d73ac4576.jpg", + "centroid": { + "lat": 31.57369, + "lng": 35.66496 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 31.57369, + "lng": 35.66496 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10030, + "trail_name": "مسار مادبا", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 205, + "slug": "turathi-10059", + "name_ar": "مشروع نساء بني حميدة للنسيج", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "مادبا", + "category": "living_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "انطلق المشروع عام 1987، وفي عام 1998 انتقل المشروع تحت إشراف مؤسسة نهر الأردن. وساهم في إنعاش وتسويق ممارسات النسيج البدوية بحيث يتم إنتاج بسط زاهية الألوان ومعلقات للجدران، ليتم حياكتها من الصوف الخالص على يد نساء بدويات من منطقة مكاور. ويشكل مشروع نساء بني حميدة منارة ملهمة للكثير من النساء من خلال إحياء حرفة النسيج ومنحهن الفرصة للعمل والإبداع؛ مما يشكل مصدراً للدخل المادي وباباً للإنتاج والحفاظ على التراث.", + "narrative": "انطلق المشروع عام 1987، وفي عام 1998 انتقل المشروع تحت إشراف مؤسسة نهر الأردن. وساهم في إنعاش وتسويق ممارسات النسيج البدوية بحيث يتم إنتاج بسط زاهية الألوان ومعلقات للجدران، ليتم حياكتها من الصوف الخالص على يد نساء بدويات من منطقة مكاور. ويشكل مشروع نساء بني حميدة منارة ملهمة للكثير من النساء من خلال إحياء حرفة النسيج ومنحهن الفرصة للعمل والإبداع؛ مما يشكل مصدراً للدخل المادي وباباً للإنتاج والحفاظ على التراث.", + "image_url": "https://turathi.jo/api/api/File/ca390bb7-2ed3-4b1d-8f97-5f4d9c59a5d5.jpg", + "image": "https://turathi.jo/api/api/File/ca390bb7-2ed3-4b1d-8f97-5f4d9c59a5d5.jpg", + "centroid": { + "lat": 31.56823, + "lng": 35.63276 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 31.56823, + "lng": 35.63276 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10030, + "trail_name": "مسار مادبا", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 206, + "slug": "turathi-10060", + "name_ar": "قلعة مكاور", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "مادبا", + "category": "archaeological_site", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "قلعة رومانية تقع على بعد 32 كم جنوب غرب مدينة مادبا بالقرب من قرية مكاور في لواء ذيبان, بنيت عام (90) قبل الميلاد، وتتربع القلعة على قمة جبل مرتفع يبلغ ارتفاعه أكثر من 730 متراً عن سطح البحر، وهي مطلة على البحر الميت والضفة الغربية. يوجد فيها كنائس وأرضيات فسيفسائية تعود للقرنين الخامس والسادس الميلاديين، وتم اعتماد الموقع كأحد مواقع الحج المسيحي بعد زيارة البابا عام 2000م. يحتوي الموقع على استراحة سياحية ومجموعة من الخدمات وموقف للحافلات السياحية. تشير بعض المصادر الدينية أن النبي يحيى عليه السلام يوحنا المعمدان في المصادر المسيحية، قد سجن في القلعة، وفيها قام الملك هيرودوس بقطع رأسه.", + "narrative": "قلعة رومانية تقع على بعد 32 كم جنوب غرب مدينة مادبا بالقرب من قرية مكاور في لواء ذيبان, بنيت عام (90) قبل الميلاد، وتتربع القلعة على قمة جبل مرتفع يبلغ ارتفاعه أكثر من 730 متراً عن سطح البحر، وهي مطلة على البحر الميت والضفة الغربية. يوجد فيها كنائس وأرضيات فسيفسائية تعود للقرنين الخامس والسادس الميلاديين، وتم اعتماد الموقع كأحد مواقع الحج المسيحي بعد زيارة البابا عام 2000م. يحتوي الموقع على استراحة سياحية ومجموعة من الخدمات وموقف للحافلات السياحية. تشير بعض المصادر الدينية أن النبي يحيى عليه السلام يوحنا المعمدان في المصادر المسيحية، قد سجن في القلعة، وفيها قام الملك هيرودوس بقطع رأسه.", + "image_url": "https://turathi.jo/api/api/File/80595463-6c47-4cf1-8549-22158738c333.jpg", + "image": "https://turathi.jo/api/api/File/80595463-6c47-4cf1-8549-22158738c333.jpg", + "centroid": { + "lat": 31.56749, + "lng": 35.62428 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 31.56749, + "lng": 35.62428 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10030, + "trail_name": "مسار مادبا", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 207, + "slug": "turathi-10061", + "name_ar": "الشارع السياحي", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "مادبا", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يعد الشارع السياحي (شارع الحسين بن علي) الذي تم إنشاؤه عام 2010 وتبلغ مسافته نحو 500 متر وأدرجته وزارة السياحة والآثار ضمن مسار مادبا التراثي، مقصداً رئيسياً للسياح القادمين إلى وسط مدينة مادبا التراثي النابض بالحياة ويعتبر محطة التقاء مئات الزوار يومياً، ونقطة بيع العديد من المنتجات في محال بيع التحف الشرقية والبازارات ومشغولات الفضة ومشاغل صناعة لوحات الفسيفساء والنول، إلى جانب توفر المطاعم السياحية والشعبية.", + "narrative": "يعد الشارع السياحي (شارع الحسين بن علي) الذي تم إنشاؤه عام 2010 وتبلغ مسافته نحو 500 متر وأدرجته وزارة السياحة والآثار ضمن مسار مادبا التراثي، مقصداً رئيسياً للسياح القادمين إلى وسط مدينة مادبا التراثي النابض بالحياة ويعتبر محطة التقاء مئات الزوار يومياً، ونقطة بيع العديد من المنتجات في محال بيع التحف الشرقية والبازارات ومشغولات الفضة ومشاغل صناعة لوحات الفسيفساء والنول، إلى جانب توفر المطاعم السياحية والشعبية.", + "image_url": "https://turathi.jo/api/api/File/ee0b8c26-2c9b-44cb-a6d2-121c1fa62832.jpg", + "image": "https://turathi.jo/api/api/File/ee0b8c26-2c9b-44cb-a6d2-121c1fa62832.jpg", + "centroid": { + "lat": 31.71863, + "lng": 35.79588 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 31.71863, + "lng": 35.79588 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10030, + "trail_name": "مسار مادبا", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 208, + "slug": "turathi-10062", + "name_ar": "صخرة عراعر", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "مادبا", + "category": "natural_reserve", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تقع صخرة عراعر أعلى المنحدر الشمالي لوادي الموجب بالقرب من موقع عراعر شرقي ذيبان على بعد 5 كم من ذيبان البلدة، ويبلغ ارتفاعها ثلاثة أمتار وتمتاز بإطلالة فريدة، وكأنها تعانق الأفق ويشعر الجالس فوقها براحة النفس والسكينة واكتشاف جمالية الوادي والجبال المحيطة بها. ويعود الموقع إلى العصر الحديدي بحسب الكتابات التاريخية للملك ميشع التي ذكرت موقع الحجر الذي هو جزء من ذيبان عاصمة مملكة مؤاب ومسلتها الشهيرة.", + "narrative": "تقع صخرة عراعر أعلى المنحدر الشمالي لوادي الموجب بالقرب من موقع عراعر شرقي ذيبان على بعد 5 كم من ذيبان البلدة، ويبلغ ارتفاعها ثلاثة أمتار وتمتاز بإطلالة فريدة، وكأنها تعانق الأفق ويشعر الجالس فوقها براحة النفس والسكينة واكتشاف جمالية الوادي والجبال المحيطة بها. ويعود الموقع إلى العصر الحديدي بحسب الكتابات التاريخية للملك ميشع التي ذكرت موقع الحجر الذي هو جزء من ذيبان عاصمة مملكة مؤاب ومسلتها الشهيرة.", + "image_url": "https://turathi.jo/api/api/File/0c2366b7-acf2-499a-90a8-57da99dbc7f9.jpg", + "image": "https://turathi.jo/api/api/File/0c2366b7-acf2-499a-90a8-57da99dbc7f9.jpg", + "centroid": { + "lat": 31.47327, + "lng": 35.80846 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 31.47327, + "lng": 35.80846 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10030, + "trail_name": "مسار مادبا", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 209, + "slug": "turathi-10063", + "name_ar": "وادي الهيدان", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "مادبا", + "category": "natural_reserve", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "واحد من أجمل الأودية المائية في الأردن، يتميز بمياهه العذبة الباردة وصخوره الملونة البازلتية. يمتد هذا الوادي 5 كم، وتكثر فيه المجاري المائية ويحتوي على سيق بامتداد 12 متر و12 بركة والعديد من الشلالات، ويضم وادي الهيدان أنواعاً عديدة من الطيور والحيوانات البرية النادرة، وهو ملجأ لأغلب الطيور المهاجرة لطبيعة تكوينه وكثرة المسطحات المائية، ويعتبر أحد أهم نقاط الجذب السياحي في مادبا.", + "narrative": "واحد من أجمل الأودية المائية في الأردن، يتميز بمياهه العذبة الباردة وصخوره الملونة البازلتية. يمتد هذا الوادي 5 كم، وتكثر فيه المجاري المائية ويحتوي على سيق بامتداد 12 متر و12 بركة والعديد من الشلالات، ويضم وادي الهيدان أنواعاً عديدة من الطيور والحيوانات البرية النادرة، وهو ملجأ لأغلب الطيور المهاجرة لطبيعة تكوينه وكثرة المسطحات المائية، ويعتبر أحد أهم نقاط الجذب السياحي في مادبا.", + "image_url": "https://turathi.jo/api/api/File/ed22a14e-17c0-4c8f-a537-92196d0eff4e.jpg", + "image": "https://turathi.jo/api/api/File/ed22a14e-17c0-4c8f-a537-92196d0eff4e.jpg", + "centroid": { + "lat": 31.52887, + "lng": 35.72733 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 31.52887, + "lng": 35.72733 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10030, + "trail_name": "مسار مادبا", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 210, + "slug": "turathi-10064", + "name_ar": "مقام الصحابي أبي ذر الغفاري", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "مادبا", + "category": "religious_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "أبو ذر جندب بن جنادة الغفاري، صحابي من قبيلة غفار التي تقع منازلها بالقرب من مكة المكرمة، وكان أبو ذر من السابقين الذين انضموا إلى دين الإسلام، وقد عرف عنه الزهد وحب الفقراء. يقع المقام في قرية شقيق غرب ذيبان، والمطلة على وادي الموجب، وهو عبارة عن «مقام» وليس ضريحاً، حيث كان مكاناً لتعبد الصحابي، أقام فيه عند عودته من الشام عدة سنوات ولم يدفن فيه.", + "narrative": "أبو ذر جندب بن جنادة الغفاري، صحابي من قبيلة غفار التي تقع منازلها بالقرب من مكة المكرمة، وكان أبو ذر من السابقين الذين انضموا إلى دين الإسلام، وقد عرف عنه الزهد وحب الفقراء. يقع المقام في قرية شقيق غرب ذيبان، والمطلة على وادي الموجب، وهو عبارة عن «مقام» وليس ضريحاً، حيث كان مكاناً لتعبد الصحابي، أقام فيه عند عودته من الشام عدة سنوات ولم يدفن فيه.", + "image_url": "https://turathi.jo/api/api/File/b322eb81-ef90-4292-8691-ae22dd91f936.jpg", + "image": "https://turathi.jo/api/api/File/b322eb81-ef90-4292-8691-ae22dd91f936.jpg", + "centroid": { + "lat": 31.48052, + "lng": 35.71597 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 31.48052, + "lng": 35.71597 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10030, + "trail_name": "مسار مادبا", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 211, + "slug": "turathi-10041", + "name_ar": "مركز الأمير الحسين بن عبد الله الثاني الثقافي", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يعتبر المركز مصدر إشعاع ثقافي ومكاناً ملائماً لإقامة الفعاليات الثقافية، وهو مجهز بكافة متطلبات العمل الثقافي، ويضم وحدة خاصة لمركز زها الثقافي استحدثت بمكرمة ملكية سامية، مما جعل المركز أيضاً مكاناً ملائماً لاحتضان كافة الأنشطة الخاصة بالطفل في مدينة معان.", + "narrative": "يعتبر المركز مصدر إشعاع ثقافي ومكاناً ملائماً لإقامة الفعاليات الثقافية، وهو مجهز بكافة متطلبات العمل الثقافي، ويضم وحدة خاصة لمركز زها الثقافي استحدثت بمكرمة ملكية سامية، مما جعل المركز أيضاً مكاناً ملائماً لاحتضان كافة الأنشطة الخاصة بالطفل في مدينة معان.", + "image_url": "https://turathi.jo/api/api/File/3e55f70a-2ec6-4494-8548-6359bfe09de2.jpg", + "image": "https://turathi.jo/api/api/File/3e55f70a-2ec6-4494-8548-6359bfe09de2.jpg", + "centroid": { + "lat": 30.22079, + "lng": 35.73611 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 30.22079, + "lng": 35.73611 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 212, + "slug": "turathi-10042", + "name_ar": "فرقة معان للفلكلور الشعبي", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "living_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تمثل الفرقة التراث والفلكلور الأردني بشكل عام وتراث مدينة معان بشكل خاص. وتشارك في العديد من المناسبات والمحافل الوطنية والدولية، وتقدم مجموعة من العروض الفنية مثل السامر الأردني، زفة وحنة العريس، السحجة المعانية، الجوفية، والدبكات التسعاوية.", + "narrative": "تمثل الفرقة التراث والفلكلور الأردني بشكل عام وتراث مدينة معان بشكل خاص. وتشارك في العديد من المناسبات والمحافل الوطنية والدولية، وتقدم مجموعة من العروض الفنية مثل السامر الأردني، زفة وحنة العريس، السحجة المعانية، الجوفية، والدبكات التسعاوية.", + "image_url": "https://turathi.jo/api/api/File/d4f1decb-fc39-43e6-9cc0-ce23e03980fb.jpg", + "image": "https://turathi.jo/api/api/File/d4f1decb-fc39-43e6-9cc0-ce23e03980fb.jpg", + "centroid": { + "lat": 30.21702, + "lng": 35.73121 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 30.21702, + "lng": 35.73121 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 213, + "slug": "turathi-10044", + "name_ar": "عزف على آلة الربابة", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "living_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "الربابة آلة موسيقية قديمة، تمثل جانباً من الموروث الشعبي الأردني الذي نعتز به، وارتبطت الربابة بالشعر والشعراء حيث تغنى على ألحانها قصائد تحمل معاني الحكمة وخلاصة التجارب الإنسانية والموعظة. الربابة من الآلات الوترية المصنوعة من الجلد ووترها الوحيد مصنوع من شعر ذيل الحصان الذي يسمى (السبيب) وحينما يشبك هذا الوتر تكون هناك قطعة خشبية بأسفل الربابة تسمى (الغزالة).", + "narrative": "الربابة آلة موسيقية قديمة، تمثل جانباً من الموروث الشعبي الأردني الذي نعتز به، وارتبطت الربابة بالشعر والشعراء حيث تغنى على ألحانها قصائد تحمل معاني الحكمة وخلاصة التجارب الإنسانية والموعظة. الربابة من الآلات الوترية المصنوعة من الجلد ووترها الوحيد مصنوع من شعر ذيل الحصان الذي يسمى (السبيب) وحينما يشبك هذا الوتر تكون هناك قطعة خشبية بأسفل الربابة تسمى (الغزالة).", + "image_url": "https://turathi.jo/api/api/File/461c3a1f-56db-4724-95c5-40c33af89ad6.jpg", + "image": "https://turathi.jo/api/api/File/461c3a1f-56db-4724-95c5-40c33af89ad6.jpg", + "centroid": { + "lat": 30.21579, + "lng": 35.73026 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 30.21579, + "lng": 35.73026 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 214, + "slug": "turathi-10045", + "name_ar": "قصر الملك المؤسس", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "archaeological_site", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "من أهم المعالم التراثية التاريخية الموجودة في مدينة معان: قصر الملك المؤسس يُعد هذا القصر من المعالم الحية الشاهدة على دور الهاشميين في تحقيق رسالة الثورة العربية الكبرى، إذ اتخذ الأمير عبد الله بن الحسين أحد أبنية محطة السكة الحديدية الحجازية في معان الذي بني سنة 1322 هـ / 1904م مقراً له حين قدم إلى المدينة في 21 تشرين الثاني 1920، وأطلق على هذا المبنى اسم (مقر الدفاع الوطني) ويتم العمل حالياً على ترميم المبنى واستدامته كمبنى تراثي ومتحف ذي قيمة تاريخية، ومحطة مهمة في مراحل تأسيس الدولة الأردنية.", + "narrative": "من أهم المعالم التراثية التاريخية الموجودة في مدينة معان: قصر الملك المؤسس يُعد هذا القصر من المعالم الحية الشاهدة على دور الهاشميين في تحقيق رسالة الثورة العربية الكبرى، إذ اتخذ الأمير عبد الله بن الحسين أحد أبنية محطة السكة الحديدية الحجازية في معان الذي بني سنة 1322 هـ / 1904م مقراً له حين قدم إلى المدينة في 21 تشرين الثاني 1920، وأطلق على هذا المبنى اسم (مقر الدفاع الوطني) ويتم العمل حالياً على ترميم المبنى واستدامته كمبنى تراثي ومتحف ذي قيمة تاريخية، ومحطة مهمة في مراحل تأسيس الدولة الأردنية.", + "image_url": "https://turathi.jo/api/api/File/a53fee49-3769-440f-8457-355a6ff1e20b.jpg", + "image": "https://turathi.jo/api/api/File/a53fee49-3769-440f-8457-355a6ff1e20b.jpg", + "centroid": { + "lat": 30.17882, + "lng": 35.76324 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 30.17882, + "lng": 35.76324 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 215, + "slug": "turathi-10046", + "name_ar": "قلعة معان (السرايا)", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "archaeological_site", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "شيدت قلعة معان العثمانية، التي تحولت إلى متحف معان التراثي، بين 1559-1563 في عهد السلطان سليمان القانوني بهدف توفير الأمان لقوافل الحجاج التي كانت تمر عبر معان من بلاد الشام إلى بلاد الحجاز. ويعرض المتحف تاريخ مدينة معان القديمة ويوثق أهمية الموقع الاستراتيجي للمدينة عبر فترات زمنية مختلفة.", + "narrative": "شيدت قلعة معان العثمانية، التي تحولت إلى متحف معان التراثي، بين 1559-1563 في عهد السلطان سليمان القانوني بهدف توفير الأمان لقوافل الحجاج التي كانت تمر عبر معان من بلاد الشام إلى بلاد الحجاز. ويعرض المتحف تاريخ مدينة معان القديمة ويوثق أهمية الموقع الاستراتيجي للمدينة عبر فترات زمنية مختلفة.", + "image_url": "https://turathi.jo/api/api/File/7e122b96-fa2e-4c61-aa9c-53c6e3ae6d1d.jpg", + "image": "https://turathi.jo/api/api/File/7e122b96-fa2e-4c61-aa9c-53c6e3ae6d1d.jpg", + "centroid": { + "lat": 30.19232, + "lng": 35.73904 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 30.19232, + "lng": 35.73904 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "1559" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 216, + "slug": "turathi-10047", + "name_ar": "سوق البدو (السلطاني)", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "سوق البدو (السلطاني) من المعالم الرئيسية القديمة في مدينة معان، بدأ تأسيسه في أوائل القرن التاسع عشر وقد أضيفت إليه بنايات كثيرة في نهايات القرن، ويعود تأسيسه إلى بداية طرق التجارة القديمة والتاريخية، ويمتد هذا السوق القديم من قلعة السرايا العثمانية نحو الشمال بطول كيلومتر واحد تقريباً، وتتوزع على جانبيه الحوانيت والدكاكين الصغيرة والمقاهي والورش الحرفية المتنوعة، كما تتفرع منه الأزقة التي تؤدي إلى مناطق سكنية أو أزقة بحوانيت تجارية أيضاً.", + "narrative": "سوق البدو (السلطاني) من المعالم الرئيسية القديمة في مدينة معان، بدأ تأسيسه في أوائل القرن التاسع عشر وقد أضيفت إليه بنايات كثيرة في نهايات القرن، ويعود تأسيسه إلى بداية طرق التجارة القديمة والتاريخية، ويمتد هذا السوق القديم من قلعة السرايا العثمانية نحو الشمال بطول كيلومتر واحد تقريباً، وتتوزع على جانبيه الحوانيت والدكاكين الصغيرة والمقاهي والورش الحرفية المتنوعة، كما تتفرع منه الأزقة التي تؤدي إلى مناطق سكنية أو أزقة بحوانيت تجارية أيضاً.", + "image_url": "https://turathi.jo/api/api/File/885f5294-8d9b-4de9-8d4c-3f99e2afcc4f.jpg", + "image": "https://turathi.jo/api/api/File/885f5294-8d9b-4de9-8d4c-3f99e2afcc4f.jpg", + "centroid": { + "lat": 30.19598, + "lng": 35.73669 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 30.19598, + "lng": 35.73669 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 217, + "slug": "turathi-10048", + "name_ar": "محطة القطار الحجازي", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تم تصميم محطة وادي رم لتحاكي محطات القطار التي كانت منتشرة على امتداد خط الحجاز الحديدي، لتصبح جزءاً مهماً من رحلة الزائر في وادي رم. فهي تقدم تجربة غنية وفريدة لهواة القطارات، والمهتمين بالتاريخ، والباحثين عن الإثارة على حد سواء، من خلال عروضها المرئية السمعية ومقتنياتها الأصلية.", + "narrative": "تم تصميم محطة وادي رم لتحاكي محطات القطار التي كانت منتشرة على امتداد خط الحجاز الحديدي، لتصبح جزءاً مهماً من رحلة الزائر في وادي رم. فهي تقدم تجربة غنية وفريدة لهواة القطارات، والمهتمين بالتاريخ، والباحثين عن الإثارة على حد سواء، من خلال عروضها المرئية السمعية ومقتنياتها الأصلية.", + "image_url": "https://turathi.jo/api/api/File/cd76ada3-ad1e-4b13-8e75-3db6250ca455.jpg", + "image": "https://turathi.jo/api/api/File/cd76ada3-ad1e-4b13-8e75-3db6250ca455.jpg", + "centroid": { + "lat": 30.17753, + "lng": 35.76604 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 30.17753, + "lng": 35.76604 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 218, + "slug": "turathi-10049", + "name_ar": "تجربة ركوب القطار (الشركة الأردنية لإحياء التراث: مشروع وادي رم)", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "natural_reserve", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "عملت الشركة الأردنية لإحياء التراث على تقديم تجربة منتج سياحي تاريخي فريدة من نوعها، يجسد شخصياتها وأدوارها أبناء المجتمع المحلي من المنطقة تمثلت في قطار 1916. من خلال هذه التجربة يسافر الزائر عبر الزمن عائداً إلى العام 1916 حين يركب قطار الحجاز الحديدي البخاري جنباً إلى جنب مع جنود عثمانيين متجهين في مهمة لتزويد إحدى حامياتهم بالجنود والسلاح بعد أن هاجمها رجال الثورة العربية الكبرى. لكن المهمة تتخذ منحى آخر حين يقع القطار وركابه في كمين نصبه الثوار.", + "narrative": "عملت الشركة الأردنية لإحياء التراث على تقديم تجربة منتج سياحي تاريخي فريدة من نوعها، يجسد شخصياتها وأدوارها أبناء المجتمع المحلي من المنطقة تمثلت في قطار 1916. من خلال هذه التجربة يسافر الزائر عبر الزمن عائداً إلى العام 1916 حين يركب قطار الحجاز الحديدي البخاري جنباً إلى جنب مع جنود عثمانيين متجهين في مهمة لتزويد إحدى حامياتهم بالجنود والسلاح بعد أن هاجمها رجال الثورة العربية الكبرى. لكن المهمة تتخذ منحى آخر حين يقع القطار وركابه في كمين نصبه الثوار.", + "image_url": "https://turathi.jo/api/api/File/97597501-a617-4641-9095-2348e1a93184.jpg", + "image": "https://turathi.jo/api/api/File/97597501-a617-4641-9095-2348e1a93184.jpg", + "centroid": { + "lat": 30.17756, + "lng": 35.76599 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 30.17756, + "lng": 35.76599 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 219, + "slug": "turathi-10050", + "name_ar": "ركوب الهجن", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "living_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يمكن لك أن تختار رحلة ركوب الجمال (الهجن) لمسافة تحددها بنفسك مع مرافق من أهل المنطقة يدلك على المكان ويروي لك أسراره وتسمياته المتعارف عليها منذ مئات السنين والاستماع لقصص البطولة والحكايات الشعبية وبعض القصائد النبطية. تجربة يمكن أن تقوم بها سواء بالنهار أو الاستمتاع بسحر الليل خصوصاً عند اختيارك ذلك مع وقت اكتمال البدر أو بمواقيت ظهور المجرة والأحداث الفلكية، يتخللها تناول فنجان من القهوة العربية أو تجربة صناعة خبز (العربود). وفي ميدان الديسة للهجن (مضمار الشيخ زايد آل نهيان) يمكنك أن تشاهد تدريبات الهجانة كما يقام فيه مهرجان الأردن لسباقات الهجن والشعر النبطي كل عام.", + "narrative": "يمكن لك أن تختار رحلة ركوب الجمال (الهجن) لمسافة تحددها بنفسك مع مرافق من أهل المنطقة يدلك على المكان ويروي لك أسراره وتسمياته المتعارف عليها منذ مئات السنين والاستماع لقصص البطولة والحكايات الشعبية وبعض القصائد النبطية. تجربة يمكن أن تقوم بها سواء بالنهار أو الاستمتاع بسحر الليل خصوصاً عند اختيارك ذلك مع وقت اكتمال البدر أو بمواقيت ظهور المجرة والأحداث الفلكية، يتخللها تناول فنجان من القهوة العربية أو تجربة صناعة خبز (العربود). وفي ميدان الديسة للهجن (مضمار الشيخ زايد آل نهيان) يمكنك أن تشاهد تدريبات الهجانة كما يقام فيه مهرجان الأردن لسباقات الهجن والشعر النبطي كل عام.", + "image_url": "https://turathi.jo/api/api/File/92de03d1-4f22-43c6-aee4-b0eb5510362d.jpg", + "image": "https://turathi.jo/api/api/File/92de03d1-4f22-43c6-aee4-b0eb5510362d.jpg", + "centroid": { + "lat": 29.62782, + "lng": 35.52386 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.62782, + "lng": 35.52386 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 220, + "slug": "turathi-10051", + "name_ar": "جمعية سيدات حوض الديسة التعاونية (متنفس البادية)", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "في عمق الصحراء الأردنية، وخاصة منطقة الديسة توجد جمعية سيدات قرى حوض الديسة، والتي تعمل فيها سيدات من المجتمع المحلي اللواتي قررن أن يكن سنداً لأنفسهن ولعائلاتهن في جمعية مميزة بمشاريعها الحرفية والزراعية. تقدم الجمعية عدداً من المشاريع، منها مشروع برنامج (بدويات) الذي يمثل تجربة سياحية ثقافية تحاكي الطبيعة وحياة البداوة فيها والتعايش مع الصحراء، ويقدم من خلاله مجموعة من الصناعات اليدوية والتقليدية المرتبطة بالبادية مثل أعمال الخزف والسيراميك، تدريب الخياطة لتصنيع الملابس والزي التقليدي بالمنطقة، ومشروع المطبخ التقليدي الذي يقدم تجربته للزوار والسائحين والمشتل الزراعي، الذي يتكون من بيوت بلاستيكية لزراعة وإكثار النباتات المهددة بالانقراض، مثل الشيح والقيصوم والغضا والميرمية والزعتر البري والقطف.", + "narrative": "في عمق الصحراء الأردنية، وخاصة منطقة الديسة توجد جمعية سيدات قرى حوض الديسة، والتي تعمل فيها سيدات من المجتمع المحلي اللواتي قررن أن يكن سنداً لأنفسهن ولعائلاتهن في جمعية مميزة بمشاريعها الحرفية والزراعية. تقدم الجمعية عدداً من المشاريع، منها مشروع برنامج (بدويات) الذي يمثل تجربة سياحية ثقافية تحاكي الطبيعة وحياة البداوة فيها والتعايش مع الصحراء، ويقدم من خلاله مجموعة من الصناعات اليدوية والتقليدية المرتبطة بالبادية مثل أعمال الخزف والسيراميك، تدريب الخياطة لتصنيع الملابس والزي التقليدي بالمنطقة، ومشروع المطبخ التقليدي الذي يقدم تجربته للزوار والسائحين والمشتل الزراعي، الذي يتكون من بيوت بلاستيكية لزراعة وإكثار النباتات المهددة بالانقراض، مثل الشيح والقيصوم والغضا والميرمية والزعتر البري والقطف.", + "image_url": "https://turathi.jo/api/api/File/bd510606-466f-419e-a2b8-6a5add4aa88c.jpg", + "image": "https://turathi.jo/api/api/File/bd510606-466f-419e-a2b8-6a5add4aa88c.jpg", + "centroid": { + "lat": 29.6538, + "lng": 35.51187 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.6538, + "lng": 35.51187 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 221, + "slug": "turathi-10053", + "name_ar": "نباتات البادية", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "للطب الشعبي والطب البديل نهجه ومعارفه المبنية على التجربة عبر الزمان، وباديتنا الأردنية تزخر بما تجود به الأرض من نباتات عطرية وزيتية فيها الترياق والشفاء وقد أكد ذلك العلم، ومنكهات طعام توارثتها أمهاتنا عن الجدات وخير من يرشدك للنافع منه ابن المكان العارف والمجرب لكل جزء من النبتة وأثره وكيفية استخدامه.", + "narrative": "للطب الشعبي والطب البديل نهجه ومعارفه المبنية على التجربة عبر الزمان، وباديتنا الأردنية تزخر بما تجود به الأرض من نباتات عطرية وزيتية فيها الترياق والشفاء وقد أكد ذلك العلم، ومنكهات طعام توارثتها أمهاتنا عن الجدات وخير من يرشدك للنافع منه ابن المكان العارف والمجرب لكل جزء من النبتة وأثره وكيفية استخدامه.", + "image_url": "https://turathi.jo/api/api/File/8440df67-94c2-4ef1-b8e8-2ac06a917f05.jpg", + "image": "https://turathi.jo/api/api/File/8440df67-94c2-4ef1-b8e8-2ac06a917f05.jpg", + "centroid": { + "lat": 30.20125, + "lng": 35.72438 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 30.20125, + "lng": 35.72438 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 222, + "slug": "turathi-10054", + "name_ar": "وادي رم", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "natural_reserve", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "مسير في وادي رم بين الجبال سجلت محمية وادي رم ضمن قائمة التراث الطبيعي العالمي في عام 2011، لتتميز جبالها الصخرية بألوانها البيضاء والصفراء والحمراء والبنية، وبتشكيلاتها الجغرافية المميزة. يحتوي وادي رم على مجموعة من الأودية الضيقة والأقواس الطبيعية والمنحدرات الشاهقة والطرق المنحدرة، فضلاً عن أكوام كبيرة من الصخور المنهارة وعدد من الكهوف والآلاف من المنحوتات الصخرية والنقوش، كما يضم أعلى القمم الجبلية في جنوب بلاد الشام وهما: جبل أم الدامي وجبل رم. \r\nتم تصوير العديد من الأفلام في وادي رم مثل فيلم لورنس العرب وفيلم المريخي، إذ جذب الوادي صانعي الأفلام خاصة أفلام الخيال العلمي التي تدور أحداثها على كوكب المريخ بسبب التشابه الشديد بين تضاريس وادي رم وكوكب المريخ ويعتبر وادي رم من أكثر المناطق السياحية في الأردن التي يزورها السياح من جميع أنحاء العالم كونه يجسد تطور الفلاحة والزراعة والحياة الحضرية في المنطقة، ويمكن للسياح ممارسة العديد من الأنشطة مثل رياضة تسلق الجبال وركوب المناطيد والقيام برحلات على ظهور الخيول والجمال أو باستخدام سيارات الدفع الرباعي ويقام فيه سنوياً سباق الإبل وهو الحدث الأول من نوعه في الأردن، بالإضافة إلى أن وادي رم يعتبر من أفضل الأماكن في الأردن لمشاهدة النجوم والمجرات ورصد زخات الشهب.", + "narrative": "مسير في وادي رم بين الجبال سجلت محمية وادي رم ضمن قائمة التراث الطبيعي العالمي في عام 2011، لتتميز جبالها الصخرية بألوانها البيضاء والصفراء والحمراء والبنية، وبتشكيلاتها الجغرافية المميزة. يحتوي وادي رم على مجموعة من الأودية الضيقة والأقواس الطبيعية والمنحدرات الشاهقة والطرق المنحدرة، فضلاً عن أكوام كبيرة من الصخور المنهارة وعدد من الكهوف والآلاف من المنحوتات الصخرية والنقوش، كما يضم أعلى القمم الجبلية في جنوب بلاد الشام وهما: جبل أم الدامي وجبل رم. \r\nتم تصوير العديد من الأفلام في وادي رم مثل فيلم لورنس العرب وفيلم المريخي، إذ جذب الوادي صانعي الأفلام خاصة أفلام الخيال العلمي التي تدور أحداثها على كوكب المريخ بسبب التشابه الشديد بين تضاريس وادي رم وكوكب المريخ ويعتبر وادي رم من أكثر المناطق السياحية في الأردن التي يزورها السياح من جميع أنحاء العالم كونه يجسد تطور الفلاحة والزراعة والحياة الحضرية في المنطقة، ويمكن للسياح ممارسة العديد من الأنشطة مثل رياضة تسلق الجبال وركوب المناطيد والقيام برحلات على ظهور الخيول والجمال أو باستخدام سيارات الدفع الرباعي ويقام فيه سنوياً سباق الإبل وهو الحدث الأول من نوعه في الأردن، بالإضافة إلى أن وادي رم يعتبر من أفضل الأماكن في الأردن لمشاهدة النجوم والمجرات ورصد زخات الشهب.", + "image_url": "https://turathi.jo/api/api/File/be6349f4-566d-4774-8fca-463e094d1889.jpg", + "image": "https://turathi.jo/api/api/File/be6349f4-566d-4774-8fca-463e094d1889.jpg", + "centroid": { + "lat": 29.55673, + "lng": 35.40756 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.55673, + "lng": 35.40756 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10027, + "trail_name": "مسار معان", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 223, + "slug": "turathi-10076", + "name_ar": "العقبة", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "هي إحدى المحافظات الأردنية، وتقع في أقصى الجنوب، وهي المنفذ البحري الوحيد للأردن حيث تقع على خليج العقبة الذي يشكل الفرع الشرقي للبحر الأحمر، ويطلق عليها أيضاً ( ثغر الأردن الباسم، وعروس البحر الأحمر ).\r\n تتميز محافظة العقبة بجوها الحار جداً في الصيف والمعتدل في الشتاء، وتمثل عصبا حيوياً للاقتصاد الأردني حيث تحتوي على مقارّ ومصانع لكبرى الشركات الأردنية بالإضافة إلى كونها محوراً سياحياً مهماً ونقطة انطلاق لخطوط السياحة الداخلية والخارجية.", + "narrative": "هي إحدى المحافظات الأردنية، وتقع في أقصى الجنوب، وهي المنفذ البحري الوحيد للأردن حيث تقع على خليج العقبة الذي يشكل الفرع الشرقي للبحر الأحمر، ويطلق عليها أيضاً ( ثغر الأردن الباسم، وعروس البحر الأحمر ).\r\n تتميز محافظة العقبة بجوها الحار جداً في الصيف والمعتدل في الشتاء، وتمثل عصبا حيوياً للاقتصاد الأردني حيث تحتوي على مقارّ ومصانع لكبرى الشركات الأردنية بالإضافة إلى كونها محوراً سياحياً مهماً ونقطة انطلاق لخطوط السياحة الداخلية والخارجية.", + "image_url": "https://turathi.jo/api/api/File/6e074a47-338c-4f08-ab35-9673bb783dde.jpeg", + "image": "https://turathi.jo/api/api/File/6e074a47-338c-4f08-ab35-9673bb783dde.jpeg", + "centroid": { + "lat": 29.54165, + "lng": 35.0056 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.54165, + "lng": 35.0056 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 224, + "slug": "turathi-10077", + "name_ar": "مرصد طيور العقبة", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "natural_reserve", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "محطة لرصد أنواع الطيور المهاجرة والتي تَعبر الأردن خلال هجرتها ما بين شمال وجنوب الكرة الأرضية. تأسس المرصد عام 2004 في العقبة من قبل سلطة منطقة العقبة الاقتصادية الخاصة وبالشراكة مع شركة مياه العقبة بإدارة الجمعية الملكية لحماية الطبيعة، ويعد أحد أهم مناطق الاستراحة لأنواع متعددة ومختلفة من الطيور في الأردن. إذا يشكل نقطة الاستراحة الأخيرة للطيور قبل دخولها لصحراء سيناء ونقطة الاستراحة الأولى عند عودتها.\r\n و يقدر عدد الطيور المحلقة التي تعبره ما يصل لسبعة ملايين ونصف طائر واعداد قد تصل لضعف هذا العدد من الأنواع الأخرى الغير محلّقة ؛ لكون اغلب الطيور غير قادرة على السباحة في الماء لذا فإنها تقوم باختيار المسافة الأقصر فوق البحار والمحيطات خلال هجرتها ولذلك تعد منطقة العقبة من المناطق الهامة للطيور لعبورها لتتمكن من العبور إلى صحراء سيناء ومن ثم الانتشار في مناطق افريقيا في الذهاب والعودة.", + "narrative": "محطة لرصد أنواع الطيور المهاجرة والتي تَعبر الأردن خلال هجرتها ما بين شمال وجنوب الكرة الأرضية. تأسس المرصد عام 2004 في العقبة من قبل سلطة منطقة العقبة الاقتصادية الخاصة وبالشراكة مع شركة مياه العقبة بإدارة الجمعية الملكية لحماية الطبيعة، ويعد أحد أهم مناطق الاستراحة لأنواع متعددة ومختلفة من الطيور في الأردن. إذا يشكل نقطة الاستراحة الأخيرة للطيور قبل دخولها لصحراء سيناء ونقطة الاستراحة الأولى عند عودتها.\r\n و يقدر عدد الطيور المحلقة التي تعبره ما يصل لسبعة ملايين ونصف طائر واعداد قد تصل لضعف هذا العدد من الأنواع الأخرى الغير محلّقة ؛ لكون اغلب الطيور غير قادرة على السباحة في الماء لذا فإنها تقوم باختيار المسافة الأقصر فوق البحار والمحيطات خلال هجرتها ولذلك تعد منطقة العقبة من المناطق الهامة للطيور لعبورها لتتمكن من العبور إلى صحراء سيناء ومن ثم الانتشار في مناطق افريقيا في الذهاب والعودة.", + "image_url": "https://turathi.jo/api/api/File/90759cdc-0309-4f78-a254-8dc1a2056a07.jpeg", + "image": "https://turathi.jo/api/api/File/90759cdc-0309-4f78-a254-8dc1a2056a07.jpeg", + "centroid": { + "lat": 29.57547, + "lng": 34.9857 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.57547, + "lng": 34.9857 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 225, + "slug": "turathi-10079", + "name_ar": "الكنيسة البيزنطية (كنيسة العقبة)", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "archaeological_site", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "كنيسة من القرن الثالث الميلادي وتعتبر أقدم كنيسة في العالم أي بكونها أقدم بناء مسيحي مخصص للعبادة بينما كانت سابقاتها مبانٍ محولة عن استخدامات أو ديانات أخرى. تم اكتشافها بسنة 1998 ويعود تاريخ بنائها إلى (293-303 ) بعد الميلاد ، مما يجعلها أقدم قليلاً من كنيسة القيامة في القدس وكنيسة المهد في بيت لحم، فكلتاهما ترجعان إلى القرن الرابع بعد الميلاد. لا يعلم بالضبط لأي طائفة أو فكر مسيحي انتمى أتباعها، إلا أنه ورد ذكر بيريلوس (Beryllus) قس إيلة على أنه من الذين حضروا مجمع خلقدونية بسنة 451 م.\r\nوتعد الكنيسة ذات نظام بازيليكي، وجهتها إلى الشرق، وغير منتظمة التخطيط، قياسها (16 م × 26م)، بنيت من الحجر والطوب الطيني وغطيت جدرانها الداخلية بالألون، ويعتقد إنها كانت ذات طابقين.", + "narrative": "كنيسة من القرن الثالث الميلادي وتعتبر أقدم كنيسة في العالم أي بكونها أقدم بناء مسيحي مخصص للعبادة بينما كانت سابقاتها مبانٍ محولة عن استخدامات أو ديانات أخرى. تم اكتشافها بسنة 1998 ويعود تاريخ بنائها إلى (293-303 ) بعد الميلاد ، مما يجعلها أقدم قليلاً من كنيسة القيامة في القدس وكنيسة المهد في بيت لحم، فكلتاهما ترجعان إلى القرن الرابع بعد الميلاد. لا يعلم بالضبط لأي طائفة أو فكر مسيحي انتمى أتباعها، إلا أنه ورد ذكر بيريلوس (Beryllus) قس إيلة على أنه من الذين حضروا مجمع خلقدونية بسنة 451 م.\r\nوتعد الكنيسة ذات نظام بازيليكي، وجهتها إلى الشرق، وغير منتظمة التخطيط، قياسها (16 م × 26م)، بنيت من الحجر والطوب الطيني وغطيت جدرانها الداخلية بالألون، ويعتقد إنها كانت ذات طابقين.", + "image_url": "https://turathi.jo/api/api/File/ee94a8bc-ba4e-43cc-95ad-daaf5a42415a.jpg", + "image": "https://turathi.jo/api/api/File/ee94a8bc-ba4e-43cc-95ad-daaf5a42415a.jpg", + "centroid": { + "lat": 29.53375, + "lng": 34.99906 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.53375, + "lng": 34.99906 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 226, + "slug": "turathi-10080", + "name_ar": "ساحة الثورة العربية الكبرى", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "واحدة من أبرز المعالم التاريخية في مدينة العقبة وهي واحدة من المحطات الرئيسية للثورة العربية الكبرى عام 1916م, وهي ثورة مسلحة ضد الدولة العثمانية التي امتدت من مكة المكرمة إلى بلاد الشام. ويقع اليوم في هذه المنطقة سارية علم الثورة الكبرى وقلعة العقبة التي تعد واحدة من أجمل المعالم الاثرية. ويقصدها السياح أيضاً للجلوس على الشاطئ والاستمتاع بالمناظر الطبيعية ومشهد غروب الشمس.", + "narrative": "واحدة من أبرز المعالم التاريخية في مدينة العقبة وهي واحدة من المحطات الرئيسية للثورة العربية الكبرى عام 1916م, وهي ثورة مسلحة ضد الدولة العثمانية التي امتدت من مكة المكرمة إلى بلاد الشام. ويقع اليوم في هذه المنطقة سارية علم الثورة الكبرى وقلعة العقبة التي تعد واحدة من أجمل المعالم الاثرية. ويقصدها السياح أيضاً للجلوس على الشاطئ والاستمتاع بالمناظر الطبيعية ومشهد غروب الشمس.", + "image_url": "https://turathi.jo/api/api/File/2f0c68f0-35ee-4e44-b1de-f2261881b427.jpeg", + "image": "https://turathi.jo/api/api/File/2f0c68f0-35ee-4e44-b1de-f2261881b427.jpeg", + "centroid": { + "lat": 29.52151, + "lng": 35.00043 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.52151, + "lng": 35.00043 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 227, + "slug": "turathi-10081", + "name_ar": "منزل الشريف حسين", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تم إنشاء بيت الشريف الحسين بن علي في العقبة عام 1917 على طراز البيوت الحجازية، ويقع بجانب قلعة العقبة التاريخية، وقد بناه أهل العقبة وسكنه الشريف الحسين بن علي.\r\nوقد تحوّل البيت إلى دار للحكومة في ثلاثينات القرن الماضي، وهو يضم حالياً متحف آثار العقبة الذي يشتمل على نقش بالخط الكوفي لآية الكرسي، ومجموعة من الدنانير الذهبية التي تعود للعصر الفاطمي، وقطع أثرية فخارية، وتاجيّة من الرمل والحجارة وُجدت في موقع أيلة.\r\nوقد تم ترميم وتطوير البيت وأصبح متحفاً وطنياً يضم مقتنيات الثورة العربية الكبرى والآثار الموجودة في العقبة.", + "narrative": "تم إنشاء بيت الشريف الحسين بن علي في العقبة عام 1917 على طراز البيوت الحجازية، ويقع بجانب قلعة العقبة التاريخية، وقد بناه أهل العقبة وسكنه الشريف الحسين بن علي.\r\nوقد تحوّل البيت إلى دار للحكومة في ثلاثينات القرن الماضي، وهو يضم حالياً متحف آثار العقبة الذي يشتمل على نقش بالخط الكوفي لآية الكرسي، ومجموعة من الدنانير الذهبية التي تعود للعصر الفاطمي، وقطع أثرية فخارية، وتاجيّة من الرمل والحجارة وُجدت في موقع أيلة.\r\nوقد تم ترميم وتطوير البيت وأصبح متحفاً وطنياً يضم مقتنيات الثورة العربية الكبرى والآثار الموجودة في العقبة.", + "image_url": "https://turathi.jo/api/api/File/acefdd17-275f-4ef1-b9c1-c8f5e73bafe7.jpeg", + "image": "https://turathi.jo/api/api/File/acefdd17-275f-4ef1-b9c1-c8f5e73bafe7.jpeg", + "centroid": { + "lat": 29.52159, + "lng": 35.00127 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.52159, + "lng": 35.00127 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": null + }, + "site_polygon": null, + "admission": null + }, + { + "id": 228, + "slug": "turathi-10082", + "name_ar": "قلعة العقبة", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "archaeological_site", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "هي قلعة أثرية تقع وسط مدينة العقبة ، تحديداً قرب شاطئ خليج العقبة، تعود هذه القلعة لنهاية العهد المملوكي في المنطقة، لكنها تحولت اليوم إلى متحف.\r\nوبعد انطلاق الثورة العربية الكبرى اتخذتها القبائل الأردنية مقراً للقيادة ومنطلقاً لتحرير بلاد الشام من الحكم العثماني الذي استمر 400 عام.\r\nللقلعة شكل رباعي وكان يوجد على كل زاوية منها برج حجري وقد تهدمت هذه الأبراج الآن وللقلعة بوابة عظيمة بقنطرة يدخل منها إلى صحن القلعة بدهليز وقناطر، وعلى اليمين والشمال ديوانان كبيران نقش على جدرانهما كتابات تشير إلى باني القلعة والذي قام بترميمها وهو السلطان المملوكي قانصوه الغوري (1501-1516)", + "narrative": "هي قلعة أثرية تقع وسط مدينة العقبة ، تحديداً قرب شاطئ خليج العقبة، تعود هذه القلعة لنهاية العهد المملوكي في المنطقة، لكنها تحولت اليوم إلى متحف.\r\nوبعد انطلاق الثورة العربية الكبرى اتخذتها القبائل الأردنية مقراً للقيادة ومنطلقاً لتحرير بلاد الشام من الحكم العثماني الذي استمر 400 عام.\r\nللقلعة شكل رباعي وكان يوجد على كل زاوية منها برج حجري وقد تهدمت هذه الأبراج الآن وللقلعة بوابة عظيمة بقنطرة يدخل منها إلى صحن القلعة بدهليز وقناطر، وعلى اليمين والشمال ديوانان كبيران نقش على جدرانهما كتابات تشير إلى باني القلعة والذي قام بترميمها وهو السلطان المملوكي قانصوه الغوري (1501-1516)", + "image_url": "https://turathi.jo/api/api/File/d3c71369-b7ee-4440-a04e-1aac711e4569.jpeg", + "image": "https://turathi.jo/api/api/File/d3c71369-b7ee-4440-a04e-1aac711e4569.jpeg", + "centroid": { + "lat": 29.52171, + "lng": 35.00201 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.52171, + "lng": 35.00201 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 229, + "slug": "turathi-10083", + "name_ar": "شجرة السدرة", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "من الأشجار التراثية التي اشتهرت بها العقبة حيث ارتبطت بتاريخ المدينة فسميت العديد من الأماكن في العقبة بأسماء السدر ، ويوجد في العقبة عدد من السدر المعمرة والتي شهدت أحداثاً هامة في تاريخ المدينة مثل مبايعة أهالي العقبة للشريف الحسين بن على، ويستخدم أهالي العقبة السدر في صناعة الأثاث. \r\nتعد شجرة السدر أو ما تعرف بالنبق من أهم الأشجار في مدينةِ العقبة، حيث تشكلُ مصدراً غذائياً مهماً للنحل كما تشكل واحاتٍ من الظلال خاصةً خلال ارتفاع درجات الحرارة.", + "narrative": "من الأشجار التراثية التي اشتهرت بها العقبة حيث ارتبطت بتاريخ المدينة فسميت العديد من الأماكن في العقبة بأسماء السدر ، ويوجد في العقبة عدد من السدر المعمرة والتي شهدت أحداثاً هامة في تاريخ المدينة مثل مبايعة أهالي العقبة للشريف الحسين بن على، ويستخدم أهالي العقبة السدر في صناعة الأثاث. \r\nتعد شجرة السدر أو ما تعرف بالنبق من أهم الأشجار في مدينةِ العقبة، حيث تشكلُ مصدراً غذائياً مهماً للنحل كما تشكل واحاتٍ من الظلال خاصةً خلال ارتفاع درجات الحرارة.", + "image_url": "https://turathi.jo/api/api/File/42555b01-3d51-448c-bff0-5238134944bc.jpg", + "image": "https://turathi.jo/api/api/File/42555b01-3d51-448c-bff0-5238134944bc.jpg", + "centroid": { + "lat": 29.53519, + "lng": 35.01681 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.53519, + "lng": 35.01681 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 230, + "slug": "turathi-10084", + "name_ar": "جمعية سيدات بيت الورد التعاوني", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "هي جمعية نسائية تأسست في محافظة العقبة خلال جائحة كورونا، وتهدف إلى دعم وتمكين النساء في المجتمع المحلي، خاصة من تأثرت مشاريعهن في تلك الفترة.\r\nتُعنى الجمعية بتقديم تدريبات مهنية وحرفية للنساء وذوي الإعاقة، لدمجهم في سوق العمل وتمكينهم من تحسين دخلهم عبر مشاريع منزلية وحرفية.\r\nتضم الجمعية سوقًا ومطبخًا إنتاجيًا تُسوق من خلاله منتجات غذائية وحرفية تراثية تعكس الطابع المحلي لمدينة العقبة، وتستقطب السياح والزوار المحليين. كما تتيح الجمعية تجربة الطهي المحلي، وإحياء الزي الأردني التراثي والحرف التقليدية.\r\nحظيت الجمعية بزيارة جلالة الملكة رانيا العبدالله، حيث اطلعت على أنشطتها وتحدثت مع عدد من المستفيدات حول تجاربهن في تطوير مشاريعهن وتسويق منتجاتهن.", + "narrative": "هي جمعية نسائية تأسست في محافظة العقبة خلال جائحة كورونا، وتهدف إلى دعم وتمكين النساء في المجتمع المحلي، خاصة من تأثرت مشاريعهن في تلك الفترة.\r\nتُعنى الجمعية بتقديم تدريبات مهنية وحرفية للنساء وذوي الإعاقة، لدمجهم في سوق العمل وتمكينهم من تحسين دخلهم عبر مشاريع منزلية وحرفية.\r\nتضم الجمعية سوقًا ومطبخًا إنتاجيًا تُسوق من خلاله منتجات غذائية وحرفية تراثية تعكس الطابع المحلي لمدينة العقبة، وتستقطب السياح والزوار المحليين. كما تتيح الجمعية تجربة الطهي المحلي، وإحياء الزي الأردني التراثي والحرف التقليدية.\r\nحظيت الجمعية بزيارة جلالة الملكة رانيا العبدالله، حيث اطلعت على أنشطتها وتحدثت مع عدد من المستفيدات حول تجاربهن في تطوير مشاريعهن وتسويق منتجاتهن.", + "image_url": "https://turathi.jo/api/api/File/fac58cbd-6ff6-4107-be41-f975ed5d6e84.jpeg", + "image": "https://turathi.jo/api/api/File/fac58cbd-6ff6-4107-be41-f975ed5d6e84.jpeg", + "centroid": { + "lat": 29.53635, + "lng": 34.99892 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.53635, + "lng": 34.99892 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 231, + "slug": "turathi-10085", + "name_ar": "مدينة أيله الإسلامية", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "archaeological_site", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "مدينة قديمة إسلامية التي أنشئت على الموقع الحالي لمدينة العقبة جنوب الأردن . يعتقد أنها أول مدينة إسلامية تأسست خارج الجزيرة العربية، وتقع أطلالها شمال غرب المركز الحالي لمدينة العقبة، يُعتقد أن الاسم آيلة كان يعني في اللغات السامية شجرة البطم. \r\n بنيت المدينة في شكل مستطيل 170 × 145 متر محصنة بجدران سميكة 2.6 متر وارتفاع 4.5 متر. و24 برج للدفاع عن المدينة، وكان للمدينة أربعة أبواب من الجهات الأربع : باب مصر (شمال)، وبوابة دمشق (شرق)، باب الحجاز(جنوب) وباب البحر (غرب). وعلى تقاطع هذه القناتين يوجد صرح رباعي (قوس رباعية)، والتي تحولت إلى مبنى سكني فاخر مزينة جدرانه في حلول القرن العاشر.", + "narrative": "مدينة قديمة إسلامية التي أنشئت على الموقع الحالي لمدينة العقبة جنوب الأردن . يعتقد أنها أول مدينة إسلامية تأسست خارج الجزيرة العربية، وتقع أطلالها شمال غرب المركز الحالي لمدينة العقبة، يُعتقد أن الاسم آيلة كان يعني في اللغات السامية شجرة البطم. \r\n بنيت المدينة في شكل مستطيل 170 × 145 متر محصنة بجدران سميكة 2.6 متر وارتفاع 4.5 متر. و24 برج للدفاع عن المدينة، وكان للمدينة أربعة أبواب من الجهات الأربع : باب مصر (شمال)، وبوابة دمشق (شرق)، باب الحجاز(جنوب) وباب البحر (غرب). وعلى تقاطع هذه القناتين يوجد صرح رباعي (قوس رباعية)، والتي تحولت إلى مبنى سكني فاخر مزينة جدرانه في حلول القرن العاشر.", + "image_url": "https://turathi.jo/api/api/File/2c4f210b-1a1e-49b2-802e-d3938149bdba.jpeg", + "image": "https://turathi.jo/api/api/File/2c4f210b-1a1e-49b2-802e-d3938149bdba.jpeg", + "centroid": { + "lat": 29.53132, + "lng": 35.00029 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.53132, + "lng": 35.00029 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 232, + "slug": "turathi-10086", + "name_ar": "مسجد الشريف حسين بن علي", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "religious_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يُعد مسجد الشريف حسين بن علي العقبة واحد من أروع معالم المحافظة وأجمل مساجدها، وهو أيضاً من أجمل المساجد في المملكة الأردنية.\r\nبُني مسجد الشريف الحسين بن علي ، في عهد المغفور له جلالة الملك الحسين بن طلال، طيّب الله ثراه، عام 1979، تخليداً لذكرى الشريف الحسين بن علي قائد الثورة العربية الكبرى.\r\nوفي 7 تشرين الأول 2011 افتتح جلالة الملك عبدالله الثاني توسعة وإعادة تأهيل المسجد الذي يشكل معلماً معمارياً يُبرز فنون العمارة العربية والإسلامية.\r\nوروعي في تصميم المسجد الذي تبلغ مساحته الإجمالية 3100 متر مربع، إبراز جوانب العمارة الإسلامية في البناء من حيث أعمال التصميم الداخلية والخارجية التي تظهر في الأقواس والأبواب والقباب والمئذنة التي تعتلي إحدى زواياه بارتفاع 40 متراً. و يتميز بتصاميمه الرائعة التي تمزج بين الفنون القديمة والحديثة، ويعتبر من أجمل الاماكن السياحية الدينية في العقبة.", + "narrative": "يُعد مسجد الشريف حسين بن علي العقبة واحد من أروع معالم المحافظة وأجمل مساجدها، وهو أيضاً من أجمل المساجد في المملكة الأردنية.\r\nبُني مسجد الشريف الحسين بن علي ، في عهد المغفور له جلالة الملك الحسين بن طلال، طيّب الله ثراه، عام 1979، تخليداً لذكرى الشريف الحسين بن علي قائد الثورة العربية الكبرى.\r\nوفي 7 تشرين الأول 2011 افتتح جلالة الملك عبدالله الثاني توسعة وإعادة تأهيل المسجد الذي يشكل معلماً معمارياً يُبرز فنون العمارة العربية والإسلامية.\r\nوروعي في تصميم المسجد الذي تبلغ مساحته الإجمالية 3100 متر مربع، إبراز جوانب العمارة الإسلامية في البناء من حيث أعمال التصميم الداخلية والخارجية التي تظهر في الأقواس والأبواب والقباب والمئذنة التي تعتلي إحدى زواياه بارتفاع 40 متراً. و يتميز بتصاميمه الرائعة التي تمزج بين الفنون القديمة والحديثة، ويعتبر من أجمل الاماكن السياحية الدينية في العقبة.", + "image_url": "https://turathi.jo/api/api/File/2598632f-6dcd-443b-a751-c82df9442593.jpeg", + "image": "https://turathi.jo/api/api/File/2598632f-6dcd-443b-a751-c82df9442593.jpeg", + "centroid": { + "lat": 29.52749, + "lng": 35.00244 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.52749, + "lng": 35.00244 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 233, + "slug": "turathi-10087", + "name_ar": "الصيادية العقباوية", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "living_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "من أهم وأشهر المأكولات لأهل العقبة طوال أيام السنة. وذلك بسبب وقوع العقبة بجانب البحر الزاخر بالأسماك المتنوعة والطازجة والصيادية أكلة شعبية يهتم بها سكان العقبة كثيراً ومن أكثر الوجبات المطلوبة سواء للسكان أو للزوار المحليين والأجانب حيث تتكون من السمك والأرز.", + "narrative": "من أهم وأشهر المأكولات لأهل العقبة طوال أيام السنة. وذلك بسبب وقوع العقبة بجانب البحر الزاخر بالأسماك المتنوعة والطازجة والصيادية أكلة شعبية يهتم بها سكان العقبة كثيراً ومن أكثر الوجبات المطلوبة سواء للسكان أو للزوار المحليين والأجانب حيث تتكون من السمك والأرز.", + "image_url": "https://turathi.jo/api/api/File/b2891364-0c04-4dcf-8600-de1a67295e1b.png", + "image": "https://turathi.jo/api/api/File/b2891364-0c04-4dcf-8600-de1a67295e1b.png", + "centroid": { + "lat": 29.52629, + "lng": 34.99225 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.52629, + "lng": 34.99225 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 234, + "slug": "turathi-10088", + "name_ar": "الحوح", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "living_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تشتهر منطقة العقبة كغيرها من محافظات المملكة بنوع من الحلوى يدعى الحوح حيث يعد من اطباق الحلوى الاساسية في شهر رمضان المبارك كحلوى القطايف .\r\nيتكون من طبقات من العجينة الرقيقة جدا (والتي يتم اعداها في المنزل على شكل دائرة) المحشوة بالجوز وجوز الهند والقرفة والمكسرات تدهن بالسمن البلدي ويتم تحميرها بالفرن ويتم اضافة القطر عليها.", + "narrative": "تشتهر منطقة العقبة كغيرها من محافظات المملكة بنوع من الحلوى يدعى الحوح حيث يعد من اطباق الحلوى الاساسية في شهر رمضان المبارك كحلوى القطايف .\r\nيتكون من طبقات من العجينة الرقيقة جدا (والتي يتم اعداها في المنزل على شكل دائرة) المحشوة بالجوز وجوز الهند والقرفة والمكسرات تدهن بالسمن البلدي ويتم تحميرها بالفرن ويتم اضافة القطر عليها.", + "image_url": "https://turathi.jo/api/api/File/44482536-ebcc-4219-b75a-0c37cfa3607c.png", + "image": "https://turathi.jo/api/api/File/44482536-ebcc-4219-b75a-0c37cfa3607c.png", + "centroid": { + "lat": 29.52729, + "lng": 34.99722 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.52729, + "lng": 34.99722 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 235, + "slug": "turathi-10089", + "name_ar": "آلة السمسمية", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "العقبة", + "category": "living_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "هي آلة موسيقية وترية شعبية ذات خمسة أوتار اشتهر بها البحارة في البحر الأحمر وهي مرافقة للصيادين أثناء رحلاتهم البحرية تميزت بها مدن الساحل المصري و الجزيرة العربية والعقبة . وهي من أقدم الآلات الموسيقية التي عرفها الإنسان، ولها تسميات أطلقت عليها مثل قيثارة السومري في الحقبة السومرية و الكنارة المصرية ثم السمسمية في الوقت الحاضر. تصنع من خشب الزان حيث جاءت السمسمية إلى العقبة بداية القرن الماضي من الجزيرة العربية عن طريق أحد الحجازيين و ارتبطت هذه الآلة بحياة أهالي العقبة وتراثهم حتى غدت أنيسة العقباوي ورفيقة دربه ونديمه في البر والبحر. كما أصبحت معلماً من معالم فولكلوره وتراثه وارتبطت ألحانها وأغانيها بالبحر بشكل كبير.", + "narrative": "هي آلة موسيقية وترية شعبية ذات خمسة أوتار اشتهر بها البحارة في البحر الأحمر وهي مرافقة للصيادين أثناء رحلاتهم البحرية تميزت بها مدن الساحل المصري و الجزيرة العربية والعقبة . وهي من أقدم الآلات الموسيقية التي عرفها الإنسان، ولها تسميات أطلقت عليها مثل قيثارة السومري في الحقبة السومرية و الكنارة المصرية ثم السمسمية في الوقت الحاضر. تصنع من خشب الزان حيث جاءت السمسمية إلى العقبة بداية القرن الماضي من الجزيرة العربية عن طريق أحد الحجازيين و ارتبطت هذه الآلة بحياة أهالي العقبة وتراثهم حتى غدت أنيسة العقباوي ورفيقة دربه ونديمه في البر والبحر. كما أصبحت معلماً من معالم فولكلوره وتراثه وارتبطت ألحانها وأغانيها بالبحر بشكل كبير.", + "image_url": "https://turathi.jo/api/api/File/80a3a8f9-85c1-4e1e-aa85-9f6f99ec289e.png", + "image": "https://turathi.jo/api/api/File/80a3a8f9-85c1-4e1e-aa85-9f6f99ec289e.png", + "centroid": { + "lat": 29.52694, + "lng": 34.99704 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 29.52694, + "lng": 34.99704 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10032, + "trail_name": "مسار العقبة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 236, + "slug": "turathi-10065", + "name_ar": "إربد", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تعتبر ثالث أكبر مدن المملكة بعد العاصمة عمان والزرقاء بالنسبة لعدد السكان. أطلق عليها قديماً العديد من التسميات منها \"أرابيلا\" وهي كلمة يونانية تعني الأرض الخصبة. تتميز الطبيعة الجغرافية للمدينة بالطبيعة السهلية، في حين المناطق الغربية منها ذات طبيعة أقرب للطبيعة الجبلية. تعاقبت عليها الكثير من الحضارات والعصور وأبرزها العصر الروماني حيث بنيت في موقع متوسط بين مدن حلف الديكابولس العشرة التاريخية، وأصبحت فيما بعد مركزاً من مراكز الفتح الإسلامي. كما يوجد في المدينة مكتبة تعد من أكبر المكتبات في الشرق الأوسط وهي مكتبة الحسين بن طلال في جامعة اليرموك.", + "narrative": "تعتبر ثالث أكبر مدن المملكة بعد العاصمة عمان والزرقاء بالنسبة لعدد السكان. أطلق عليها قديماً العديد من التسميات منها \"أرابيلا\" وهي كلمة يونانية تعني الأرض الخصبة. تتميز الطبيعة الجغرافية للمدينة بالطبيعة السهلية، في حين المناطق الغربية منها ذات طبيعة أقرب للطبيعة الجبلية. تعاقبت عليها الكثير من الحضارات والعصور وأبرزها العصر الروماني حيث بنيت في موقع متوسط بين مدن حلف الديكابولس العشرة التاريخية، وأصبحت فيما بعد مركزاً من مراكز الفتح الإسلامي. كما يوجد في المدينة مكتبة تعد من أكبر المكتبات في الشرق الأوسط وهي مكتبة الحسين بن طلال في جامعة اليرموك.", + "image_url": "https://turathi.jo/api/api/File/9b53f510-e8f2-46af-b0f0-0dfdbc071d6c.webp", + "image": "https://turathi.jo/api/api/File/9b53f510-e8f2-46af-b0f0-0dfdbc071d6c.webp", + "centroid": { + "lat": 32.5525, + "lng": 35.85271 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.5525, + "lng": 35.85271 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10031, + "trail_name": "مسار إربد - درب الزيتون (2) لواء الكورة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 237, + "slug": "turathi-10066", + "name_ar": "بلدة تبنه", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "بلدة أردنية من محافظة إربد تقع ضمن منطقة لواء الكورة، وتعتبر تبنة من أهم القرى الحصينة في شمال الأردن، ومن أقدم البلدات التاريخية. وتحتوي القرية على امتداد واسع من أشجار الزيتون المعمر الذي يزيد عمره عن 800 سنة، حيث يسقى من مياه الأمطار. توجد في بلدة تبنة أقدم معاصر لعصر الزيتون بالطريقة القديمة التي يزيد عمرها عن 2000 سنة والتي تعود للعصر الروماني، ما زالت رحاها تدور منذ نحو 100 عام وبجودة عالية، حيث تعتبر بلدة تبنه هي القرية الوحيدة في الأردن التي ما زالت تحتفظ بإنتاج زيت الزيتون المسلوق.", + "narrative": "بلدة أردنية من محافظة إربد تقع ضمن منطقة لواء الكورة، وتعتبر تبنة من أهم القرى الحصينة في شمال الأردن، ومن أقدم البلدات التاريخية. وتحتوي القرية على امتداد واسع من أشجار الزيتون المعمر الذي يزيد عمره عن 800 سنة، حيث يسقى من مياه الأمطار. توجد في بلدة تبنة أقدم معاصر لعصر الزيتون بالطريقة القديمة التي يزيد عمرها عن 2000 سنة والتي تعود للعصر الروماني، ما زالت رحاها تدور منذ نحو 100 عام وبجودة عالية، حيث تعتبر بلدة تبنه هي القرية الوحيدة في الأردن التي ما زالت تحتفظ بإنتاج زيت الزيتون المسلوق.", + "image_url": "https://turathi.jo/api/api/File/80d66237-a3c2-4a8e-b836-0da6b06e08f3.png", + "image": "https://turathi.jo/api/api/File/80d66237-a3c2-4a8e-b836-0da6b06e08f3.png", + "centroid": { + "lat": 32.47629, + "lng": 35.7297 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.47629, + "lng": 35.7297 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10031, + "trail_name": "مسار إربد - درب الزيتون (2) لواء الكورة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 238, + "slug": "turathi-10067", + "name_ar": "بلدة مرحبا", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تشكل الحي الشمالي الغربي من مدينة دير أبي سعيد التابعة إدارياً لمحافظة إربد. يقطنها ما يقارب ثلاثة آلاف نسمة، عرفت قديماً باسم \"عفرا أم الذهب\" وهي قرية رومانية. وتحاط القرية بأشجار الزيتون وتشتهر في زراعة الرمان والزيتون والتين والحمضيات، والبقوليات مثل الحمص والعدس والباميا والبصل. تتميز هذه القرية بطبيعتها الجميلة وتنبت فيها أزهار طبيعية وخاصة زهرة النرجس والسوسنة السوداء والدحنون، كما ينبع منها العديد من الينابيع أشهرها وادي زقلاب ويصب في سد زقلاب المعروف بسد شرحبيل بن حسنة والذي شيد عام 1964. وتحتوي البلدة على معصرة زيتون قديمة كان يستخدمها أهل المنطقة في عصر المحصول المتوفر لديهم من الزيتون.", + "narrative": "تشكل الحي الشمالي الغربي من مدينة دير أبي سعيد التابعة إدارياً لمحافظة إربد. يقطنها ما يقارب ثلاثة آلاف نسمة، عرفت قديماً باسم \"عفرا أم الذهب\" وهي قرية رومانية. وتحاط القرية بأشجار الزيتون وتشتهر في زراعة الرمان والزيتون والتين والحمضيات، والبقوليات مثل الحمص والعدس والباميا والبصل. تتميز هذه القرية بطبيعتها الجميلة وتنبت فيها أزهار طبيعية وخاصة زهرة النرجس والسوسنة السوداء والدحنون، كما ينبع منها العديد من الينابيع أشهرها وادي زقلاب ويصب في سد زقلاب المعروف بسد شرحبيل بن حسنة والذي شيد عام 1964. وتحتوي البلدة على معصرة زيتون قديمة كان يستخدمها أهل المنطقة في عصر المحصول المتوفر لديهم من الزيتون.", + "image_url": "https://turathi.jo/api/api/File/0e9d1e10-3ec5-431e-a4cb-509fb67b2ea4.png", + "image": "https://turathi.jo/api/api/File/0e9d1e10-3ec5-431e-a4cb-509fb67b2ea4.png", + "centroid": { + "lat": 32.51221, + "lng": 35.67415 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.51221, + "lng": 35.67415 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10031, + "trail_name": "مسار إربد - درب الزيتون (2) لواء الكورة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 239, + "slug": "turathi-10068", + "name_ar": "بيت إيدس", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تضم هذه القرية عدداً من المعالم الأثرية الرومانية ومنها كنيستان تعتبران من أقدم الكنائس في العالم؛ حيث تحتويان على أرضية فسيفسائية بالإضافة إلى المعصرة الأثرية التي تعتبر أول نموذج متكامل لمعصرة زيت زيتون أثرية تعمل على تقنية العصر على البارد من العصر الروماني - البيزنطي، وكهف السيد المسيح والذي يعتقد أن المسيح أقام فيه أربعين يوماً. ويوجد في البلدة مسجد المقداد بن عمرو الذي يتميز بارتفاع مأذنته؛ إذ يبلغ ارتفاعها حوالي (50) م. كما تعد أشجار الزيتون المعمر \"المهراس\" من أبرز أنواع الأشجار المزروعة إضافة للّوزيات، والبلوط والسنديان المعمر.", + "narrative": "تضم هذه القرية عدداً من المعالم الأثرية الرومانية ومنها كنيستان تعتبران من أقدم الكنائس في العالم؛ حيث تحتويان على أرضية فسيفسائية بالإضافة إلى المعصرة الأثرية التي تعتبر أول نموذج متكامل لمعصرة زيت زيتون أثرية تعمل على تقنية العصر على البارد من العصر الروماني - البيزنطي، وكهف السيد المسيح والذي يعتقد أن المسيح أقام فيه أربعين يوماً. ويوجد في البلدة مسجد المقداد بن عمرو الذي يتميز بارتفاع مأذنته؛ إذ يبلغ ارتفاعها حوالي (50) م. كما تعد أشجار الزيتون المعمر \"المهراس\" من أبرز أنواع الأشجار المزروعة إضافة للّوزيات، والبلوط والسنديان المعمر.", + "image_url": "https://turathi.jo/api/api/File/5991d01f-8b67-4ea2-814d-f992a794b2ad.jpg", + "image": "https://turathi.jo/api/api/File/5991d01f-8b67-4ea2-814d-f992a794b2ad.jpg", + "centroid": { + "lat": 32.43992, + "lng": 35.69724 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.43992, + "lng": 35.69724 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10031, + "trail_name": "مسار إربد - درب الزيتون (2) لواء الكورة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 240, + "slug": "turathi-10069", + "name_ar": "وادي الريان (اليابس) وادي جديتا:", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "natural_reserve", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يقع وادي الريان في لواء الكورة في الطرف الجنوبي الغربي لمحافظة إربد، وهو الحد الفاصل عن محافظة عجلون، وأحد الأودية الأردنية الهامة دائمة الجريان. وتبلغ مساحة حوض الوادي ما يقارب 89 كم مربع، وينحدر من ارتفاع 1200 متر فوق سطح البحر حيث عرف قديماً باسم وادي اليابس. ويحتوي الوادي على عدد من الآثار التاريخية وأبرزها طاحونة عودة (وهي أول نموذج متكامل لطاحونة حبوب من الفترة العثمانية تعمل بقوة دفع المياه)، وتعتبر أحد أبرز الطواحيين الخمسة الموجودة في المنطقة. وتشتهر المنطقة بإنتاج العديد من المحاصييل الزراعية منها: حقول الزيتون المعمر بالإضافة إلى \"زيتون المهراس\"، الحمضيات بأنواعها والخضار والموز وأشجار النخيل.", + "narrative": "يقع وادي الريان في لواء الكورة في الطرف الجنوبي الغربي لمحافظة إربد، وهو الحد الفاصل عن محافظة عجلون، وأحد الأودية الأردنية الهامة دائمة الجريان. وتبلغ مساحة حوض الوادي ما يقارب 89 كم مربع، وينحدر من ارتفاع 1200 متر فوق سطح البحر حيث عرف قديماً باسم وادي اليابس. ويحتوي الوادي على عدد من الآثار التاريخية وأبرزها طاحونة عودة (وهي أول نموذج متكامل لطاحونة حبوب من الفترة العثمانية تعمل بقوة دفع المياه)، وتعتبر أحد أبرز الطواحيين الخمسة الموجودة في المنطقة. وتشتهر المنطقة بإنتاج العديد من المحاصييل الزراعية منها: حقول الزيتون المعمر بالإضافة إلى \"زيتون المهراس\"، الحمضيات بأنواعها والخضار والموز وأشجار النخيل.", + "image_url": "https://turathi.jo/api/api/File/8bf2632b-39f5-4189-8f68-784908b19389.jpg", + "image": "https://turathi.jo/api/api/File/8bf2632b-39f5-4189-8f68-784908b19389.jpg", + "centroid": { + "lat": 32.40329, + "lng": 35.68712 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.40329, + "lng": 35.68712 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10031, + "trail_name": "مسار إربد - درب الزيتون (2) لواء الكورة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 241, + "slug": "turathi-10070", + "name_ar": "حقول المهراس", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "living_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تشتهر مدينة إربد وخاصة لواء الكورة بانتشار الزيتون المعمر \"المهراس\" على امتداد مساحات واسعة؛ حيث بلغت المساحة المزروعة بأشجار الزيتون في المحافظة وألويتها حوالي (75 ألف دونم تقريباً وتشكل ما نسبته 95% من الأشجار المثمرة فيها). وتبلغ أشجار الزيتون المعمر \"مهراس\" في منطقة الكورة حوالي (30 ألف شجرة). ومن أبرز صفات الزيتون المعمر أنه قادر على تحمل العطش والجفاف، كما يتميز بحجمه الكبير مقارنة بأشجار الزيتون البلدي، كما أنه قادر على التأقلم مع مختلف البيئات باستثناء التربة المالحة.", + "narrative": "تشتهر مدينة إربد وخاصة لواء الكورة بانتشار الزيتون المعمر \"المهراس\" على امتداد مساحات واسعة؛ حيث بلغت المساحة المزروعة بأشجار الزيتون في المحافظة وألويتها حوالي (75 ألف دونم تقريباً وتشكل ما نسبته 95% من الأشجار المثمرة فيها). وتبلغ أشجار الزيتون المعمر \"مهراس\" في منطقة الكورة حوالي (30 ألف شجرة). ومن أبرز صفات الزيتون المعمر أنه قادر على تحمل العطش والجفاف، كما يتميز بحجمه الكبير مقارنة بأشجار الزيتون البلدي، كما أنه قادر على التأقلم مع مختلف البيئات باستثناء التربة المالحة.", + "image_url": "https://turathi.jo/api/api/File/6190a372-6400-474d-a83c-20fe7e981089.jpg", + "image": "https://turathi.jo/api/api/File/6190a372-6400-474d-a83c-20fe7e981089.jpg", + "centroid": { + "lat": 32.50727, + "lng": 35.72352 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.50727, + "lng": 35.72352 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10031, + "trail_name": "مسار إربد - درب الزيتون (2) لواء الكورة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 242, + "slug": "turathi-10071", + "name_ar": "المسجد الزيداني", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "religious_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يعتبر من أقدم المساجد في المملكة حيث يعود تاريخ بنائه إلى عام 1765م، بناه \"أحمد ظاهر الزيداني\" إبان العهد العثماني بجانب القلعة الزيدانية، ويعتبران من أبرز آثار الزيادنة في تبنه، التي اتخذوها مقراً لهم عندما حاولوا الانشقاق عن الدولة العثمانية؛ أصبح هذا المسجد مرجعاً تعليمياً لأبناء البلدة.", + "narrative": "يعتبر من أقدم المساجد في المملكة حيث يعود تاريخ بنائه إلى عام 1765م، بناه \"أحمد ظاهر الزيداني\" إبان العهد العثماني بجانب القلعة الزيدانية، ويعتبران من أبرز آثار الزيادنة في تبنه، التي اتخذوها مقراً لهم عندما حاولوا الانشقاق عن الدولة العثمانية؛ أصبح هذا المسجد مرجعاً تعليمياً لأبناء البلدة.", + "image_url": "https://turathi.jo/api/api/File/00878d3f-147e-4697-a458-faebccaa3b7b.jpg", + "image": "https://turathi.jo/api/api/File/00878d3f-147e-4697-a458-faebccaa3b7b.jpg", + "centroid": { + "lat": 32.47555, + "lng": 35.7281 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.47555, + "lng": 35.7281 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10031, + "trail_name": "مسار إربد - درب الزيتون (2) لواء الكورة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 243, + "slug": "turathi-10072", + "name_ar": "غابات برقش", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "natural_reserve", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تقع في الجزء الشرقي من لواء الكورة وإلى الجنوب من محمية زوبيا للأحياء البرية، ولهذه الغابات مزايا بيئية في وجود قمة لهذه الغابات تعرف برأس برقش الذي يرتفع عن مستوى سطح البحر حوالي 870 متر. من مزاياها الجغرافية أنها تشرف على معظم مناطق شمال الأردن وسهول حوران وجبل الشيخ ومنطقة الجليل الأعلى وجبال الكرمل وسهل مرج ابن عامر وغور بيسان ولواء جنين في فلسطين. وتضم هذه غابات أشجاراً حرجية قديمة من السنديان والبلوط والبطم والبلان والزعرور والعبهرة والملول والخروب والنبق بالإضافة إلى اكتساء أراضي الغابة بالأعشاب المتنوعة من أزهار برية نادرة وأعشاب طبيعية حيث تمتزج الألوان الطبيعية على شكل بساط أخضر جميل.", + "narrative": "تقع في الجزء الشرقي من لواء الكورة وإلى الجنوب من محمية زوبيا للأحياء البرية، ولهذه الغابات مزايا بيئية في وجود قمة لهذه الغابات تعرف برأس برقش الذي يرتفع عن مستوى سطح البحر حوالي 870 متر. من مزاياها الجغرافية أنها تشرف على معظم مناطق شمال الأردن وسهول حوران وجبل الشيخ ومنطقة الجليل الأعلى وجبال الكرمل وسهل مرج ابن عامر وغور بيسان ولواء جنين في فلسطين. وتضم هذه غابات أشجاراً حرجية قديمة من السنديان والبلوط والبطم والبلان والزعرور والعبهرة والملول والخروب والنبق بالإضافة إلى اكتساء أراضي الغابة بالأعشاب المتنوعة من أزهار برية نادرة وأعشاب طبيعية حيث تمتزج الألوان الطبيعية على شكل بساط أخضر جميل.", + "image_url": "https://turathi.jo/api/api/File/32cda2ae-9c78-40ff-ae58-2394ca741cc2.jpg", + "image": "https://turathi.jo/api/api/File/32cda2ae-9c78-40ff-ae58-2394ca741cc2.jpg", + "centroid": { + "lat": 32.44329, + "lng": 35.73956 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.44329, + "lng": 35.73956 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10031, + "trail_name": "مسار إربد - درب الزيتون (2) لواء الكورة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 244, + "slug": "turathi-10073", + "name_ar": "مغارة برقش", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "natural_reserve", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "(مغارة الظهر) أو برقش وهي عبارة عن تجويف طبيعي مكون من عدة مغارات ودهاليز متصلة ببعضها البعض تكونت في الأزمنة الجيولوجية الغابرة. مدخل الكهف ضيق للغاية وصعب الولوج إليه بسهولة، وتقدر مساحة الكهف بحوالي (1300 متر مربع) حيث يحتوي على تشكيلات من المارل الرخامي القرمزي اللون على شكل مخاريط من الصواعد في أرضية المغارة، ومخاريط النوازل والهوابط المدلاة من سقف المغارة، إضافة إلى لوحات طبيعية جدارية متدرجة في الألوان والأطاريف وذات جمال طبيعي نادر.", + "narrative": "(مغارة الظهر) أو برقش وهي عبارة عن تجويف طبيعي مكون من عدة مغارات ودهاليز متصلة ببعضها البعض تكونت في الأزمنة الجيولوجية الغابرة. مدخل الكهف ضيق للغاية وصعب الولوج إليه بسهولة، وتقدر مساحة الكهف بحوالي (1300 متر مربع) حيث يحتوي على تشكيلات من المارل الرخامي القرمزي اللون على شكل مخاريط من الصواعد في أرضية المغارة، ومخاريط النوازل والهوابط المدلاة من سقف المغارة، إضافة إلى لوحات طبيعية جدارية متدرجة في الألوان والأطاريف وذات جمال طبيعي نادر.", + "image_url": "https://turathi.jo/api/api/File/f91fd6f5-9bdf-4d75-86db-ecf05a8966ae.jpg", + "image": "https://turathi.jo/api/api/File/f91fd6f5-9bdf-4d75-86db-ecf05a8966ae.jpg", + "centroid": { + "lat": 32.43661, + "lng": 35.7437 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.43661, + "lng": 35.7437 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10031, + "trail_name": "مسار إربد - درب الزيتون (2) لواء الكورة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 245, + "slug": "turathi-10074", + "name_ar": "متحف دار السرايا", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "متحف آثار أردني يقع في مدينة إربد، يعود تاريخه إلى الحقبة العثمانية في بلاد الشام، وتحديداً في منتصف القرن التاسع عشر، حيث تم إنشاؤه كقلعة فوق الطرف الجنوبي لتل إربد. ويشبه المبنى في مخططه القلاع والخانات التي أسسها العثمانيون على درب الحج الشامي. يحتوي المتحف على سبع قاعات للعرض، تبدأ بقاعة إربد التي خصصت لعرض معلومات تتعلق بتاريخ ومعالم المدينة، ثم قاعة التعدين، وقاعة العصور الكلاسيكية، وقاعة المنحوتات، وقاعة العصور الإسلامية، وقاعة الفسيفساء. استُغلت الساحة السماوية للبناء كمعرض مفتوح للعديد من المنحوتات الحجرية من توابيت وبوابات حجرية وتاجيات.", + "narrative": "متحف آثار أردني يقع في مدينة إربد، يعود تاريخه إلى الحقبة العثمانية في بلاد الشام، وتحديداً في منتصف القرن التاسع عشر، حيث تم إنشاؤه كقلعة فوق الطرف الجنوبي لتل إربد. ويشبه المبنى في مخططه القلاع والخانات التي أسسها العثمانيون على درب الحج الشامي. يحتوي المتحف على سبع قاعات للعرض، تبدأ بقاعة إربد التي خصصت لعرض معلومات تتعلق بتاريخ ومعالم المدينة، ثم قاعة التعدين، وقاعة العصور الكلاسيكية، وقاعة المنحوتات، وقاعة العصور الإسلامية، وقاعة الفسيفساء. استُغلت الساحة السماوية للبناء كمعرض مفتوح للعديد من المنحوتات الحجرية من توابيت وبوابات حجرية وتاجيات.", + "image_url": "https://turathi.jo/api/api/File/0b4e2914-16d6-4386-b0f3-bf6413ffce71.jpg", + "image": "https://turathi.jo/api/api/File/0b4e2914-16d6-4386-b0f3-bf6413ffce71.jpg", + "centroid": { + "lat": 32.55781, + "lng": 35.848 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.55781, + "lng": 35.848 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10031, + "trail_name": "مسار إربد - درب الزيتون (2) لواء الكورة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 246, + "slug": "turathi-10075", + "name_ar": "بيت عرار الثقافي", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "إربد", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يقع على السفح الجنوبي لتل إربد وهو عبارة عن مبنى ومتحف يحمل ذكرى شاعر الأردن مصطفى وهبي التل \"عرار\". تم بناء البيت على الطراز الشامي من الحجر الأسود البازلتي وحجر \"القرطيان\" المبزر باللون الأحمر حيث بناه والد عرار: صالح التل في عام 1888 في مرحلته الأولى، وتم إجراء توسعة وإضافة على البناء في عام 1905 ليصبح كما هو الآن. وفي فناء البيت أشجار التوت والزيتون والليمون حيث تحتضن قبر شاعر الأردن الأول مصطفى وهبي التل \"عرار\".", + "narrative": "يقع على السفح الجنوبي لتل إربد وهو عبارة عن مبنى ومتحف يحمل ذكرى شاعر الأردن مصطفى وهبي التل \"عرار\". تم بناء البيت على الطراز الشامي من الحجر الأسود البازلتي وحجر \"القرطيان\" المبزر باللون الأحمر حيث بناه والد عرار: صالح التل في عام 1888 في مرحلته الأولى، وتم إجراء توسعة وإضافة على البناء في عام 1905 ليصبح كما هو الآن. وفي فناء البيت أشجار التوت والزيتون والليمون حيث تحتضن قبر شاعر الأردن الأول مصطفى وهبي التل \"عرار\".", + "image_url": "https://turathi.jo/api/api/File/21484a19-ee31-4efd-8866-02b52e3ac538.jpg", + "image": "https://turathi.jo/api/api/File/21484a19-ee31-4efd-8866-02b52e3ac538.jpg", + "centroid": { + "lat": 32.55754, + "lng": 35.84672 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.55754, + "lng": 35.84672 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10031, + "trail_name": "مسار إربد - درب الزيتون (2) لواء الكورة", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 247, + "slug": "turathi-10010", + "name_ar": "مركز ثقافي جرش", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "جرش", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "أسست وزارة الثقافة مركز ثقافي جرش ليكون منارةً ومكانا ملائما لإقامة الفعاليات الثقافية،\r\nويحتوي المركز على مساحات إبداعية وقاعات، بالإضافة إلى مسرح ليغطي احتياجات المحافظة\r\nمن القاعات والمنشآت الثقافية.", + "narrative": "أسست وزارة الثقافة مركز ثقافي جرش ليكون منارةً ومكانا ملائما لإقامة الفعاليات الثقافية،\r\nويحتوي المركز على مساحات إبداعية وقاعات، بالإضافة إلى مسرح ليغطي احتياجات المحافظة\r\nمن القاعات والمنشآت الثقافية.", + "image_url": "https://turathi.jo/api/api/File/c17698d8-816f-4459-99b4-3e506126e9b7.png", + "image": "https://turathi.jo/api/api/File/c17698d8-816f-4459-99b4-3e506126e9b7.png", + "centroid": { + "lat": 32.27821, + "lng": 35.91028 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.27821, + "lng": 35.91028 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10018, + "trail_name": "مسار جرش", + "year_documented": null + }, + "site_polygon": null, + "admission": null + }, + { + "id": 248, + "slug": "turathi-10011", + "name_ar": "مقام النبي هود", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "جرش", + "category": "religious_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يتربع المقام على قمة جبل مرتفع وهو عبارة عن مسجد أنشئ حديثاً ضمن مشاريع الإعمار الهاشمي لمقامات الصحابة؛ حيث تشير المصادر العربية إلى أن النبي هود \"عليه السلام\" كان يتعبد في الكهف المجاور للمسجد والذي ما زال على حاله في ساحة المسجد الخلفية.", + "narrative": "يتربع المقام على قمة جبل مرتفع وهو عبارة عن مسجد أنشئ حديثاً ضمن مشاريع الإعمار الهاشمي لمقامات الصحابة؛ حيث تشير المصادر العربية إلى أن النبي هود \"عليه السلام\" كان يتعبد في الكهف المجاور للمسجد والذي ما زال على حاله في ساحة المسجد الخلفية.", + "image_url": "https://turathi.jo/api/api/File/d72f2065-7bf1-4a10-95eb-22bee0325372.jpg", + "image": "https://turathi.jo/api/api/File/d72f2065-7bf1-4a10-95eb-22bee0325372.jpg", + "centroid": { + "lat": 32.25585, + "lng": 35.90977 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.25585, + "lng": 35.90977 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10018, + "trail_name": "مسار جرش", + "year_documented": null + }, + "site_polygon": null, + "admission": null + }, + { + "id": 249, + "slug": "turathi-10012", + "name_ar": "جمعية سيدات جرش الخيرية", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "جرش", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تهدف الجمعية إلى تمكين المرأة ورفع قدراتها في المجالات المهنية والحياتية والنوعية وتسهم في خلق فرص العمل من خلال تنفيذ المشاريع الصغيرة والمتوسطة التي تضمن تشغيل المرأة، إضافة إلى مساهمتها في تنمية الشباب من خلال رفع قدراتهم في المجالات المهنية وخلق فرص عمل لهم، ويوجد في الجمعية ثلاثة أقسام للحرف اليدوية: فن التطريز التقليدي، الملابس التقليدية، مشغل خياطة متنوع.", + "narrative": "تهدف الجمعية إلى تمكين المرأة ورفع قدراتها في المجالات المهنية والحياتية والنوعية وتسهم في خلق فرص العمل من خلال تنفيذ المشاريع الصغيرة والمتوسطة التي تضمن تشغيل المرأة، إضافة إلى مساهمتها في تنمية الشباب من خلال رفع قدراتهم في المجالات المهنية وخلق فرص عمل لهم، ويوجد في الجمعية ثلاثة أقسام للحرف اليدوية: فن التطريز التقليدي، الملابس التقليدية، مشغل خياطة متنوع.", + "image_url": "https://turathi.jo/api/api/File/21f3905a-7954-4c9d-bc1f-16008282835d.png", + "image": "https://turathi.jo/api/api/File/21f3905a-7954-4c9d-bc1f-16008282835d.png", + "centroid": { + "lat": 32.27579, + "lng": 35.89652 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.27579, + "lng": 35.89652 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10018, + "trail_name": "مسار جرش", + "year_documented": null + }, + "site_polygon": null, + "admission": null + }, + { + "id": 250, + "slug": "turathi-10013", + "name_ar": "مشروع بيت الأصيلات للضيافة", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "جرش", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "جاءت فكرة إنشاء المشروع في أحد الأحياء السكنية القريبة من الموقع الأثري.\r\nويتم عرض أكثر من تجربة تعكس الموروث الثقافي والتاريخي لمدينة جرش، منها تجربة طحن السماق البلدي وصناعة الزعتر وارتداء الزي الشعبي، كما يتم تقديم خدمة الطعام للزوار من الإفطار الريفي والمأكولات الشعبية.", + "narrative": "جاءت فكرة إنشاء المشروع في أحد الأحياء السكنية القريبة من الموقع الأثري.\r\nويتم عرض أكثر من تجربة تعكس الموروث الثقافي والتاريخي لمدينة جرش، منها تجربة طحن السماق البلدي وصناعة الزعتر وارتداء الزي الشعبي، كما يتم تقديم خدمة الطعام للزوار من الإفطار الريفي والمأكولات الشعبية.", + "image_url": "https://turathi.jo/api/api/File/90be2aa8-98be-4605-9b7d-50940eb0cc64.jpg", + "image": "https://turathi.jo/api/api/File/90be2aa8-98be-4605-9b7d-50940eb0cc64.jpg", + "centroid": { + "lat": 32.27338, + "lng": 35.8885 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.27338, + "lng": 35.8885 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10018, + "trail_name": "مسار جرش", + "year_documented": null + }, + "site_polygon": null, + "admission": null + }, + { + "id": 251, + "slug": "turathi-10014", + "name_ar": "سوق جرش الحرفي", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "جرش", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يضم السوق 57 محلاً تجارياً لغايات الاستثمار السياحي في مجال بيع التحف الشرقية والمنتجات المحلية الأردنية، ومعظم المستثمرين في سوق جرش الحرفي من السكان المحليين؛ لتنمية موارد الدخل من المنتج التراثي الثقافي.", + "narrative": "يضم السوق 57 محلاً تجارياً لغايات الاستثمار السياحي في مجال بيع التحف الشرقية والمنتجات المحلية الأردنية، ومعظم المستثمرين في سوق جرش الحرفي من السكان المحليين؛ لتنمية موارد الدخل من المنتج التراثي الثقافي.", + "image_url": "https://turathi.jo/api/api/File/f298e016-5554-418f-ad17-5d75a671486e.png", + "image": "https://turathi.jo/api/api/File/f298e016-5554-418f-ad17-5d75a671486e.png", + "centroid": { + "lat": 32.26341, + "lng": 35.85641 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.26341, + "lng": 35.85641 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10018, + "trail_name": "مسار جرش", + "year_documented": null + }, + "site_polygon": null, + "admission": null + }, + { + "id": 252, + "slug": "turathi-10015", + "name_ar": "مركز زوار جرش", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "جرش", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يقدم المركز مجموعة من الخدمات التي يحتاج إليها الزائر من دلالة محلية في الموقع الأثري\r\nوتوفير البروشورات والخرائط السياحية للموقع الأثري والمسارات السياحية، ويوجد بالمركز\r\nلوحات تعريفية تتضمن التسلسل التاريخي لمدينة جرش والحضارات التي تعاقبت على المدينة، كما يتم عرض فيلم قصير عن أهم المعالم السياحية والأثرية في مدينة جرش ويتوسط المركز مجسم يحتوي على خارطة للموقع الأثري.", + "narrative": "يقدم المركز مجموعة من الخدمات التي يحتاج إليها الزائر من دلالة محلية في الموقع الأثري\r\nوتوفير البروشورات والخرائط السياحية للموقع الأثري والمسارات السياحية، ويوجد بالمركز\r\nلوحات تعريفية تتضمن التسلسل التاريخي لمدينة جرش والحضارات التي تعاقبت على المدينة، كما يتم عرض فيلم قصير عن أهم المعالم السياحية والأثرية في مدينة جرش ويتوسط المركز مجسم يحتوي على خارطة للموقع الأثري.", + "image_url": "https://turathi.jo/api/api/File/453761da-9b95-41f7-91e4-467a8bdaab41.png", + "image": "https://turathi.jo/api/api/File/453761da-9b95-41f7-91e4-467a8bdaab41.png", + "centroid": { + "lat": 32.27597, + "lng": 35.89139 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.27597, + "lng": 35.89139 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10018, + "trail_name": "مسار جرش", + "year_documented": null + }, + "site_polygon": null, + "admission": null + }, + { + "id": 253, + "slug": "turathi-10019", + "name_ar": "محمية المأوى للطبيعة والبرية", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "جرش", + "category": "natural_reserve", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تتفرد المحمية بأنها تجمع الحيوانات الناجية من مناطق الحروب والتجارة غير الشرعية. وهي\r\nالأولى من نوعها في الشرق الأوسط وشمال إفريقيا لإيواء ورعاية الحيوانات البرية المشردة.\r\nوتضم مجموعة كبيرة من الأشجار الحرجية المعمرة كالبلوط والبطم واللزاب والصنوبر الحلبي\r\nوالقيقب والأعشاب البرية.", + "narrative": "تتفرد المحمية بأنها تجمع الحيوانات الناجية من مناطق الحروب والتجارة غير الشرعية. وهي\r\nالأولى من نوعها في الشرق الأوسط وشمال إفريقيا لإيواء ورعاية الحيوانات البرية المشردة.\r\nوتضم مجموعة كبيرة من الأشجار الحرجية المعمرة كالبلوط والبطم واللزاب والصنوبر الحلبي\r\nوالقيقب والأعشاب البرية.", + "image_url": "https://turathi.jo/api/api/File/4ec5b142-8bcb-40f4-b51f-c801066c01d3.png", + "image": "https://turathi.jo/api/api/File/4ec5b142-8bcb-40f4-b51f-c801066c01d3.png", + "centroid": { + "lat": 32.30228, + "lng": 35.82994 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.30228, + "lng": 35.82994 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10018, + "trail_name": "مسار جرش", + "year_documented": null + }, + "site_polygon": null, + "admission": null + }, + { + "id": 254, + "slug": "turathi-10020", + "name_ar": "قصــر الــباشا", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "جرش", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "شيده الشيخ علي الكايد العتوم في بلدة سوف نهاية العهد العثماني ليكون مقر حكم ومكان تداول الأحكام العشائرية، وكان شاهداً على العديد من الأحداث التاريخية المهمة وأهمها بيعة الأمير عبد الله على إمارةً شرق الأردن من بقية حكومات الشمال.", + "narrative": "شيده الشيخ علي الكايد العتوم في بلدة سوف نهاية العهد العثماني ليكون مقر حكم ومكان تداول الأحكام العشائرية، وكان شاهداً على العديد من الأحداث التاريخية المهمة وأهمها بيعة الأمير عبد الله على إمارةً شرق الأردن من بقية حكومات الشمال.", + "image_url": "https://turathi.jo/api/api/File/804df798-daa7-496b-b3d6-a6b721b01f7b.png", + "image": "https://turathi.jo/api/api/File/804df798-daa7-496b-b3d6-a6b721b01f7b.png", + "centroid": { + "lat": 32.27371, + "lng": 35.92858 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.27371, + "lng": 35.92858 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 10018, + "trail_name": "مسار جرش", + "year_documented": null + }, + "site_polygon": null, + "admission": null + }, + { + "id": 255, + "slug": "turathi-8", + "name_ar": "قرية لستب التاريخية", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "عجلون", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تشـــتهر القريـــة بوجـــود مســـجد لســـتب الأثـــري، أحـــد أقـــدم مســـاجد الأردن التاريخيّـــة حيـــث تـــم بنـــاء \r\nالمســـجد في القـــرن الســـابع الميـــلادي، ويتميـــز بتصميمـــه البســـيط وهندســـته المعماريـــة الإســـلامية \r\nالتقليديـــة، كمـــا تضـــم قريـــة لســـتب عـــددًا مـــن المواقـــع الأثريـــة الأخـــرى، بمـــا في ذلـــك كنيســـة مـــار إليـــاس، \r\nالتـــي يُعتقـــد أنهـــا مـــكان ولادة النبـــي إليـــاس (عليـــه الســـلام) ، بالاضافـــة إلـــى شـــجرة الأمنيـــات وهـــي نـــوع \r\nمـــن أنـــواع أشـــجار البلـــوط المشـــهورة بـــالاردن ، وتمتلـــك هـــذه الشـــجرة قيمـــة روحانيـــة وموروثًـــا ثقافيًـــا \r\nعاشـــت معـــه أجيـــال وأجيـــال، يتوافـــد النـــاس إلـــى هـــذه الشـــجرة اعتقـــادًا منهـــم أنهـــا ســـتحقق أمانيهـــم \r\nواســـتجابة دعواتهـــم ، مـــن خـــلال تعليـــق أقمشـــة أو شـــرائط ملونـــة أو أوراق يكتـــب عليهـــا أمنياتهـــم .", + "narrative": "تشـــتهر القريـــة بوجـــود مســـجد لســـتب الأثـــري، أحـــد أقـــدم مســـاجد الأردن التاريخيّـــة حيـــث تـــم بنـــاء \r\nالمســـجد في القـــرن الســـابع الميـــلادي، ويتميـــز بتصميمـــه البســـيط وهندســـته المعماريـــة الإســـلامية \r\nالتقليديـــة، كمـــا تضـــم قريـــة لســـتب عـــددًا مـــن المواقـــع الأثريـــة الأخـــرى، بمـــا في ذلـــك كنيســـة مـــار إليـــاس، \r\nالتـــي يُعتقـــد أنهـــا مـــكان ولادة النبـــي إليـــاس (عليـــه الســـلام) ، بالاضافـــة إلـــى شـــجرة الأمنيـــات وهـــي نـــوع \r\nمـــن أنـــواع أشـــجار البلـــوط المشـــهورة بـــالاردن ، وتمتلـــك هـــذه الشـــجرة قيمـــة روحانيـــة وموروثًـــا ثقافيًـــا \r\nعاشـــت معـــه أجيـــال وأجيـــال، يتوافـــد النـــاس إلـــى هـــذه الشـــجرة اعتقـــادًا منهـــم أنهـــا ســـتحقق أمانيهـــم \r\nواســـتجابة دعواتهـــم ، مـــن خـــلال تعليـــق أقمشـــة أو شـــرائط ملونـــة أو أوراق يكتـــب عليهـــا أمنياتهـــم .", + "image_url": "https://turathi.jo/api/api/File/06c65703-4541-4f36-8448-bc9693a41031.png", + "image": "https://turathi.jo/api/api/File/06c65703-4541-4f36-8448-bc9693a41031.png", + "centroid": { + "lat": 32.3831, + "lng": 35.7275 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.3831, + "lng": 35.7275 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 4, + "trail_name": "مسار عجلون - درب الزيتون (1) مهراس", + "year_documented": "1957" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 256, + "slug": "turathi-7", + "name_ar": "مركز عجلون الثقافي", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "عجلون", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يحـــوي هـــذا المركـــز مجموعـــة مـــن القاعـــات المجهـــزة لاســـتقطاب العمـــل الثقـــافي وتدريـــب الفنـــون، ومكتبـــة ومســـرح ، وعلـــى مداخـــل المركـــز تتموضـــع ســـردية عجلـــون التـــي تـــروي ذاكـــرة المـــكان والإنســـان في عجلـــون عبـــر العصـــور", + "narrative": "يحـــوي هـــذا المركـــز مجموعـــة مـــن القاعـــات المجهـــزة لاســـتقطاب العمـــل الثقـــافي وتدريـــب الفنـــون، ومكتبـــة ومســـرح ، وعلـــى مداخـــل المركـــز تتموضـــع ســـردية عجلـــون التـــي تـــروي ذاكـــرة المـــكان والإنســـان في عجلـــون عبـــر العصـــور", + "image_url": "https://turathi.jo/api/api/File/5ae9d6de-7cdd-45da-ae44-b69ea809d694.png", + "image": "https://turathi.jo/api/api/File/5ae9d6de-7cdd-45da-ae44-b69ea809d694.png", + "centroid": { + "lat": 32.30764, + "lng": 35.75896 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.30764, + "lng": 35.75896 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 4, + "trail_name": "مسار عجلون - درب الزيتون (1) مهراس", + "year_documented": "2024" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 257, + "slug": "turathi-10", + "name_ar": "دير الصمادية الشمالي والجنوبي", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "عجلون", + "category": "religious_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تقع منطقـــة ديـــر الصماديـــة في لـــواء قصبـــة عجلـــون علـــى تـــل مرتفـــع يطـــل علـــى المنطقـــة المحيطـــة. حيـــث تحتـــوي علـــى عـــدداً كبيـــراً مـــن البيـــوت التراثيـــة التـــي بنيـــت مـــن الحجـــر والطيـــن والتـــي ســـكنها أبنـــاء عشـــيرة الصمـــادي، كمـــا تشـــتهر المنطقـــة بآثارهـــا القديمـــة حيـــث تشـــير الحفريـــات الأثريـــة التـــي أجريـــت في المنطقـــة إلـــى أن ديـــر الصماديـــة الشـــمالي كان مركـــزً ا دينيًـــا وتجاريًـــا مهماً في العصـــر الرومـــاني \r\nالبيزنطـــي، وتحتـــوي علـــى كنيســـة أثريـــة كبيـــرة تعـــود إلـــى القـــرن الرابـــع الميـــلادي، وهـــي مبنيـــة مـــن الحجـــارة المصقولـــة، وتضـــم فسيفســـاء أرضيـــة جميلـــة، و بقايـــا معبـــد رومـــاني قديـــم، وبقايـــا أســـوار البلـــدة القديمـــة.", + "narrative": "تقع منطقـــة ديـــر الصماديـــة في لـــواء قصبـــة عجلـــون علـــى تـــل مرتفـــع يطـــل علـــى المنطقـــة المحيطـــة. حيـــث تحتـــوي علـــى عـــدداً كبيـــراً مـــن البيـــوت التراثيـــة التـــي بنيـــت مـــن الحجـــر والطيـــن والتـــي ســـكنها أبنـــاء عشـــيرة الصمـــادي، كمـــا تشـــتهر المنطقـــة بآثارهـــا القديمـــة حيـــث تشـــير الحفريـــات الأثريـــة التـــي أجريـــت في المنطقـــة إلـــى أن ديـــر الصماديـــة الشـــمالي كان مركـــزً ا دينيًـــا وتجاريًـــا مهماً في العصـــر الرومـــاني \r\nالبيزنطـــي، وتحتـــوي علـــى كنيســـة أثريـــة كبيـــرة تعـــود إلـــى القـــرن الرابـــع الميـــلادي، وهـــي مبنيـــة مـــن الحجـــارة المصقولـــة، وتضـــم فسيفســـاء أرضيـــة جميلـــة، و بقايـــا معبـــد رومـــاني قديـــم، وبقايـــا أســـوار البلـــدة القديمـــة.", + "image_url": "https://turathi.jo/api/api/File/ba4173c7-c9e9-428a-b363-d2d0772adc21.png", + "image": "https://turathi.jo/api/api/File/ba4173c7-c9e9-428a-b363-d2d0772adc21.png", + "centroid": { + "lat": 32.24334, + "lng": 35.76869 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.24334, + "lng": 35.76869 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 4, + "trail_name": "مسار عجلون - درب الزيتون (1) مهراس", + "year_documented": "2001" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 258, + "slug": "turathi-13", + "name_ar": "معصرة السلام", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "عجلون", + "category": "living_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "وهي معصرة مزودة بأنظمة حديثة لعصر الزيتون.تأسست المعصرة في سنة 2002. \r\nيبـــدأ موســـم قطـــف الزيتـــون في بدايـــة فصـــل الخريـــف (من منتصـــف شـــهر تشـــرين الأول ولغايـــة نهايـــة شـــهر تشـــرين الثـــاني) \r\nالـــذي يعتبـــر حدثـــاً خاصـــاً في حياتنـــا، وركنـــاً أصيـــلا مـــن تراثنـــا، حيـــث تجتمـــع العائلـــة الأردنيـــة لجمـــع ثمـــار الزيتـــون عـــن الأشـــجار كمـــا ويبـــادر طـــلاب المـــدارس بفعاليـــات التطـــوّ ع في قطـــف الزيتـــون، لتتـــرك التجربـــة بصمتهـــا في وعـــي الأجيـــال الناشـــئة، وبعدهـــا تســـتقبل المعاصـــر بأنواعهـــا ثمـــار الزيتـــون لعصـــره والحصـــول علـــى الزيـــت.", + "narrative": "وهي معصرة مزودة بأنظمة حديثة لعصر الزيتون.تأسست المعصرة في سنة 2002. \r\nيبـــدأ موســـم قطـــف الزيتـــون في بدايـــة فصـــل الخريـــف (من منتصـــف شـــهر تشـــرين الأول ولغايـــة نهايـــة شـــهر تشـــرين الثـــاني) \r\nالـــذي يعتبـــر حدثـــاً خاصـــاً في حياتنـــا، وركنـــاً أصيـــلا مـــن تراثنـــا، حيـــث تجتمـــع العائلـــة الأردنيـــة لجمـــع ثمـــار الزيتـــون عـــن الأشـــجار كمـــا ويبـــادر طـــلاب المـــدارس بفعاليـــات التطـــوّ ع في قطـــف الزيتـــون، لتتـــرك التجربـــة بصمتهـــا في وعـــي الأجيـــال الناشـــئة، وبعدهـــا تســـتقبل المعاصـــر بأنواعهـــا ثمـــار الزيتـــون لعصـــره والحصـــول علـــى الزيـــت.", + "image_url": "https://turathi.jo/api/api/File/fcc92c01-6c9a-4907-9861-f74b24b3e266.png", + "image": "https://turathi.jo/api/api/File/fcc92c01-6c9a-4907-9861-f74b24b3e266.png", + "centroid": { + "lat": 32.3025, + "lng": 35.702 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.3025, + "lng": 35.702 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 4, + "trail_name": "مسار عجلون - درب الزيتون (1) مهراس", + "year_documented": "2002" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 259, + "slug": "turathi-11", + "name_ar": "قرية الوهادنة", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "عجلون", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تقـــع قريـــة الوهادنـــة علـــى ســـفح جبـــل مـــن جبـــال عجلـــون حيـــث يعـــود تســـميتها إلـــى الوهـــاد وتعنـــي الأراضـــي المرتفعـــة المطلـــة، وكان يطلـــق عليهـــا في الوثائـــق العثمانيـــة بالخربـــة ( لكثـــرة آثارهـــا ) وتعتبـــر منطقـــة شـــفا غوريـــة تبعـــد عـــن الأغـــوار حوالـــي أربعـــة كيلومتـــرات. ويتوســـط البلـــدة الحديثـــة العديـــد مـــن بقايـــا البيـــوت التراثيـــة التـــي تمثـــل جـــزءاً مـــن القريـــة القديمـــة مـــن الحقبـــة العثمانيـــة ذات النمـــط المعمـــاري الريفـــي المميـــز بالعقـــود.", + "narrative": "تقـــع قريـــة الوهادنـــة علـــى ســـفح جبـــل مـــن جبـــال عجلـــون حيـــث يعـــود تســـميتها إلـــى الوهـــاد وتعنـــي الأراضـــي المرتفعـــة المطلـــة، وكان يطلـــق عليهـــا في الوثائـــق العثمانيـــة بالخربـــة ( لكثـــرة آثارهـــا ) وتعتبـــر منطقـــة شـــفا غوريـــة تبعـــد عـــن الأغـــوار حوالـــي أربعـــة كيلومتـــرات. ويتوســـط البلـــدة الحديثـــة العديـــد مـــن بقايـــا البيـــوت التراثيـــة التـــي تمثـــل جـــزءاً مـــن القريـــة القديمـــة مـــن الحقبـــة العثمانيـــة ذات النمـــط المعمـــاري الريفـــي المميـــز بالعقـــود.", + "image_url": "https://turathi.jo/api/api/File/0cdb0525-02b1-4d61-92fa-020af7f0428f.png", + "image": "https://turathi.jo/api/api/File/0cdb0525-02b1-4d61-92fa-020af7f0428f.png", + "centroid": { + "lat": 32.3275, + "lng": 35.688 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.3275, + "lng": 35.688 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 4, + "trail_name": "مسار عجلون - درب الزيتون (1) مهراس", + "year_documented": "2000" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 260, + "slug": "turathi-12", + "name_ar": "متحف الوهادنة للتراث الشعبي", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "عجلون", + "category": "cultural_center", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "و يحتـــوي المتحـــف علـــى ركـــن الوثائـــق والمحفوظـــات التـــي جمعـــت العديـــد مـــن الصـــور والوثائـــق القديمـــة التـــي تتحـــدث عـــن بلـــدة الوهادنـــة ومنطقـــة الشـــفا وعجلـــون ، وركـــن المـــواد الغذائيـــة التـــي عرفهـــا واســـتخدمها الآبـــاء والأجـــداد ، بالإضافـــة إلـــى ركـــن المعـــدات والأدوات التـــي كانـــت تســـتخدم للزراعـــة وحراثـــة الأرض ، وركـــن الشـــبابيك القديمـــة ، وركـــن بيـــت الفخـــار ، وركـــن الألبســـة الشـــعبية، وأدوات صناعـــة القهـــوة", + "narrative": "و يحتـــوي المتحـــف علـــى ركـــن الوثائـــق والمحفوظـــات التـــي جمعـــت العديـــد مـــن الصـــور والوثائـــق القديمـــة التـــي تتحـــدث عـــن بلـــدة الوهادنـــة ومنطقـــة الشـــفا وعجلـــون ، وركـــن المـــواد الغذائيـــة التـــي عرفهـــا واســـتخدمها الآبـــاء والأجـــداد ، بالإضافـــة إلـــى ركـــن المعـــدات والأدوات التـــي كانـــت تســـتخدم للزراعـــة وحراثـــة الأرض ، وركـــن الشـــبابيك القديمـــة ، وركـــن بيـــت الفخـــار ، وركـــن الألبســـة الشـــعبية، وأدوات صناعـــة القهـــوة", + "image_url": "https://turathi.jo/api/api/File/f2f8ee75-a0d7-45c5-ab6e-b50d3e11b894.png", + "image": "https://turathi.jo/api/api/File/f2f8ee75-a0d7-45c5-ab6e-b50d3e11b894.png", + "centroid": { + "lat": 32.31125, + "lng": 35.77259 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.31125, + "lng": 35.77259 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 4, + "trail_name": "مسار عجلون - درب الزيتون (1) مهراس", + "year_documented": "1990" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 261, + "slug": "turathi-16", + "name_ar": "تلفريك عجلون", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "عجلون", + "category": "heritage_trail_stop", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "هـــو مشـــروع ســـياحي، بـــدأ تشـــغيله في مدينـــة عجلـــون يـــوم 16 حزيران 2023،تديره شركة المجموعة الأردنية للمناطـــق الحـــرة والمناطـــق التنمويـــة.يمتد مسار التلفريك على مدى 2.5 كليومتر من محطـــة الانطـــلاق في منطقـــة غابـــات اشـــتفينا، إلـــى محطـــة الوصـــول الواقعـــة بجانـــب قلعـــة الربـــض، وعدد عرباته في المرحلة الأولى 40 عربة سعة كلٍ منها 8 أشخاص. أما مدة الرحلة فهي 10دقائق.", + "narrative": "هـــو مشـــروع ســـياحي، بـــدأ تشـــغيله في مدينـــة عجلـــون يـــوم 16 حزيران 2023،تديره شركة المجموعة الأردنية للمناطـــق الحـــرة والمناطـــق التنمويـــة.يمتد مسار التلفريك على مدى 2.5 كليومتر من محطـــة الانطـــلاق في منطقـــة غابـــات اشـــتفينا، إلـــى محطـــة الوصـــول الواقعـــة بجانـــب قلعـــة الربـــض، وعدد عرباته في المرحلة الأولى 40 عربة سعة كلٍ منها 8 أشخاص. أما مدة الرحلة فهي 10دقائق.", + "image_url": "https://turathi.jo/api/api/File/fd52d641-666f-4c8f-a7b3-407076528069.png", + "image": "https://turathi.jo/api/api/File/fd52d641-666f-4c8f-a7b3-407076528069.png", + "centroid": { + "lat": 32.3361, + "lng": 35.7395 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.3361, + "lng": 35.7395 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 4, + "trail_name": "مسار عجلون - درب الزيتون (1) مهراس", + "year_documented": "2023" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 262, + "slug": "turathi-10021", + "name_ar": "محمية عجلون", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "عجلون", + "category": "natural_reserve", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "تقع محمية غابات عجلون في الجزء الشمالي من محافظة عجلون، على بعد 8\r\nكم شمال مركز المحافظة، حيث تأسست المحمية في 1989 بمساحة تبلغ\r\n(12000) دونم وترتفع ما بين 700 – 1500 متر عن سطح البحر، تشهد المحمية\r\nتنوعاً حيوياً هائلاً من الاشجار (كالبلوط، والبطم وغيرها) والنباتات والأزهار البرية\r\n(شقاق النعمان والدحنون)، بالإضافة إلى النباتات الطبية مثل الجعدة ورجل\r\nالحمامة وغيرها من النباتات العلاجية المشهورة في المنطقة،\r\nكما تحتوي على أنواع عديدة من الطيور والقوارض والثدييات و الزواحف والغزلان، ويوجد في المحمية مخيم سياحي مكون من (20) كوخاً بالإضافة إلى قاعة حرف يدوية لتدريب المجتمع المحلي وتسويق منتاجاته وإقامة الفعاليات والأنشطة المختلفة.", + "narrative": "تقع محمية غابات عجلون في الجزء الشمالي من محافظة عجلون، على بعد 8\r\nكم شمال مركز المحافظة، حيث تأسست المحمية في 1989 بمساحة تبلغ\r\n(12000) دونم وترتفع ما بين 700 – 1500 متر عن سطح البحر، تشهد المحمية\r\nتنوعاً حيوياً هائلاً من الاشجار (كالبلوط، والبطم وغيرها) والنباتات والأزهار البرية\r\n(شقاق النعمان والدحنون)، بالإضافة إلى النباتات الطبية مثل الجعدة ورجل\r\nالحمامة وغيرها من النباتات العلاجية المشهورة في المنطقة،\r\nكما تحتوي على أنواع عديدة من الطيور والقوارض والثدييات و الزواحف والغزلان، ويوجد في المحمية مخيم سياحي مكون من (20) كوخاً بالإضافة إلى قاعة حرف يدوية لتدريب المجتمع المحلي وتسويق منتاجاته وإقامة الفعاليات والأنشطة المختلفة.", + "image_url": "https://turathi.jo/api/api/File/59d5a9b3-21a5-4c17-8914-5ce3577d5680.png", + "image": "https://turathi.jo/api/api/File/59d5a9b3-21a5-4c17-8914-5ce3577d5680.png", + "centroid": { + "lat": 32.3785, + "lng": 35.762 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.3785, + "lng": 35.762 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 4, + "trail_name": "مسار عجلون - درب الزيتون (1) مهراس", + "year_documented": "2001" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 263, + "slug": "turathi-10022", + "name_ar": "مسجد عجلون الكبير", + "name_en": null, + "country": "الأردن", + "country_en": "Jordan", + "governorate": "عجلون", + "category": "religious_heritage", + "tier": "Tier-2 National Cultural Trail", + "era": null, + "narrative_ar": "يعتبر ثاني أقدم المساجد الأردنية بعد المسجد الحسيني بالعاصمة عمان، يعود\r\nتاريخ بنائه إلى عام 1247 ميلادية الموافق 645 هجرية وأمر ببنائه السلطان\r\nالأيوبي نجم الدين أيوب، وكان للمسجد دور ديني وعلمي بارز في العصر\r\nالمملوكي، إذ ألحقت به مدرسة علمية عرفت بالمدرسة اليقينية ودرست العلوم\r\nالشرعية والطب، حيث يتسع مع التوسعات الجديدة لأكثر من ألف مصلٍ، ويضم\r\nالمسجد القديم 3 خلوات، واحدة للمعتكفين، وأخرى دار للقرآن الكريم،\r\nومدرسة شرعية على هيئة الكتاتيب القديمة، فيما أدرج مسجد عجلون الكبير\r\nعلى قائمة التراث الإسلامي (الإيسيسكو) عام 2019.", + "narrative": "يعتبر ثاني أقدم المساجد الأردنية بعد المسجد الحسيني بالعاصمة عمان، يعود\r\nتاريخ بنائه إلى عام 1247 ميلادية الموافق 645 هجرية وأمر ببنائه السلطان\r\nالأيوبي نجم الدين أيوب، وكان للمسجد دور ديني وعلمي بارز في العصر\r\nالمملوكي، إذ ألحقت به مدرسة علمية عرفت بالمدرسة اليقينية ودرست العلوم\r\nالشرعية والطب، حيث يتسع مع التوسعات الجديدة لأكثر من ألف مصلٍ، ويضم\r\nالمسجد القديم 3 خلوات، واحدة للمعتكفين، وأخرى دار للقرآن الكريم،\r\nومدرسة شرعية على هيئة الكتاتيب القديمة، فيما أدرج مسجد عجلون الكبير\r\nعلى قائمة التراث الإسلامي (الإيسيسكو) عام 2019.", + "image_url": "https://turathi.jo/api/api/File/b0c4033c-917d-4ffa-8a7e-39e45a00e378.png", + "image": "https://turathi.jo/api/api/File/b0c4033c-917d-4ffa-8a7e-39e45a00e378.png", + "centroid": { + "lat": 32.3332, + "lng": 35.7523 + }, + "gate": null, + "parking": null, + "ticket": null, + "coordinates": { + "centroid": { + "lat": 32.3332, + "lng": 35.7523 + }, + "access_gate": null, + "parking": null, + "ticket_office": null + }, + "is_verified": true, + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "metadata": { + "country": "الأردن", + "curator": "وزارة الثقافة (منصة تراثي) / دائرة التراث", + "trail_id": 4, + "trail_name": "مسار عجلون - درب الزيتون (1) مهراس", + "year_documented": "2000" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 301, + "slug": "qasr-al-azraq-basalt-castle", + "name_ar": "قلعة قصر الأزرق الأثري البازلتية", + "name_en": "Qasr Al-Azraq Basalt Castle", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "الزرقاء", + "category": "monument", + "tier": "Tier-2 National Heritage Monument", + "era": "الروماني والأموي والأيوبي / Roman, Umayyad & Ayyubid", + "narrative_ar": "حصن عسكري وأثري فريد شيد بالكامل من حجر البازلت البركاني الأسود في قلب واحة الأزرق؛ استخدم كحامية رومانية واستراحة صيد أموية، ثم أعاد الأمير عز الدين أيبك بناءه في العصر الأيوبي، واشتهر تاريخياً بكونه مقراً لورنس العرب خلال الثورة العربية الكبرى عام 1918.", + "narrative": "حصن عسكري وأثري فريد شيد بالكامل من حجر البازلت البركاني الأسود في قلب واحة الأزرق؛ استخدم كحامية رومانية واستراحة صيد أموية، ثم أعاد الأمير عز الدين أيبك بناءه في العصر الأيوبي، واشتهر تاريخياً بكونه مقراً لورنس العرب خلال الثورة العربية الكبرى عام 1918.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/4/47/Qasr_Azraq.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/4/47/Qasr_Azraq.jpg", + "centroid": { + "lat": 31.834, + "lng": 36.8273 + }, + "gate": { + "lat": 31.8338, + "lng": 36.8276 + }, + "parking": { + "lat": 31.8335, + "lng": 36.828 + }, + "ticket": { + "lat": 31.8337, + "lng": 36.8277 + }, + "coordinates": { + "centroid": { + "lat": 31.834, + "lng": 36.8273 + }, + "access_gate": { + "lat": 31.8338, + "lng": 36.8276 + }, + "parking": { + "lat": 31.8335, + "lng": 36.828 + }, + "ticket_office": { + "lat": 31.8337, + "lng": 36.8277 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار / دائرة الآثار العامة", + "metadata": { + "country": "الأردن", + "curator": "وزارة السياحة والآثار / دائرة الآثار العامة", + "trail_name": "مسار القصور الصحراوية الأموية" + }, + "site_polygon": null, + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 0.5, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 3, + "currency": "JOD" + } + ] + } + }, + { + "id": 302, + "slug": "qasr-al-hallabat-hammam-sarah", + "name_ar": "قصر الحلابات وحمام السراح الأموي", + "name_en": "Qasr Al-Hallabat and Hammam As-Sarah", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "الزرقاء", + "category": "archaeological_site", + "tier": "Tier-2 National Heritage Monument", + "era": "الروماني والأموي / Roman & Umayyad", + "narrative_ar": "مجمع معماري أموي متكامل يضم قلعة محصنة تميزت بأرضيات الفسيفساء البديعة وجداريات الجص المحفورة ومسجداً أموياً، بالإضافة إلى حمام السراح التابع له ونظام حصاد مائي وسدود وبساتين تاريخية تعكس استثمار الأمويين في استصلاح البادية.", + "narrative": "مجمع معماري أموي متكامل يضم قلعة محصنة تميزت بأرضيات الفسيفساء البديعة وجداريات الجص المحفورة ومسجداً أموياً، بالإضافة إلى حمام السراح التابع له ونظام حصاد مائي وسدود وبساتين تاريخية تعكس استثمار الأمويين في استصلاح البادية.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/7/77/Qasr_al-Hallabat_Jordan.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/7/77/Qasr_al-Hallabat_Jordan.jpg", + "centroid": { + "lat": 32.0927, + "lng": 36.3283 + }, + "gate": { + "lat": 32.0925, + "lng": 36.3286 + }, + "parking": { + "lat": 32.0922, + "lng": 36.329 + }, + "ticket": { + "lat": 32.0924, + "lng": 36.3287 + }, + "coordinates": { + "centroid": { + "lat": 32.0927, + "lng": 36.3283 + }, + "access_gate": { + "lat": 32.0925, + "lng": 36.3286 + }, + "parking": { + "lat": 32.0922, + "lng": 36.329 + }, + "ticket_office": { + "lat": 32.0924, + "lng": 36.3287 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار / دائرة الآثار العامة", + "metadata": { + "country": "الأردن", + "curator": "وزارة السياحة والآثار / دائرة الآثار العامة", + "trail_name": "مسار القصور الصحراوية الأموية" + }, + "site_polygon": null, + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ + { + "visitor_type": "jordanian", + "amount": 0.5, + "currency": "JOD" + }, + { + "visitor_type": "foreign_visitor", + "amount": 3, + "currency": "JOD" + } + ] + } + }, + { + "id": 303, + "slug": "mazar-shuhada-mutah", + "name_ar": "مزار شهداء معركة مؤتة (أضرحة جعفر الطيار وزيد بن حارثة)", + "name_en": "Shrines of Mutah Battle Martyrs", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "الكرك", + "category": "religious_heritage", + "tier": "Tier-2 National Heritage Monument", + "era": "الصدر الإسلامي والأيوبي والمملوكي / Early Islamic, Ayyubid & Mamluk", + "narrative_ar": "مجمع مقامات إسلامي مهيب في لواء المزار الجنوبي يضم أضرحة قادة معركة مؤتة الخالدة (8 هـ / 629 م): جعفر بن أبي طالب (الطيار)، زيد بن حارثة، وعبد الله بن رواحة، ويعد واحداً من أقدس وأهم معالم السياحة الدينية الإسلامية في بلاد الشام.", + "narrative": "مجمع مقامات إسلامي مهيب في لواء المزار الجنوبي يضم أضرحة قادة معركة مؤتة الخالدة (8 هـ / 629 م): جعفر بن أبي طالب (الطيار)، زيد بن حارثة، وعبد الله بن رواحة، ويعد واحداً من أقدس وأهم معالم السياحة الدينية الإسلامية في بلاد الشام.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/2/23/Mazar_Mutah_Shrines.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/2/23/Mazar_Mutah_Shrines.jpg", + "centroid": { + "lat": 31.0664, + "lng": 35.6961 + }, + "gate": { + "lat": 31.0668, + "lng": 35.6963 + }, + "parking": { + "lat": 31.0672, + "lng": 35.6968 + }, + "ticket": { + "lat": 31.0667, + "lng": 35.6962 + }, + "coordinates": { + "centroid": { + "lat": 31.0664, + "lng": 35.6961 + }, + "access_gate": { + "lat": 31.0668, + "lng": 35.6963 + }, + "parking": { + "lat": 31.0672, + "lng": 35.6968 + }, + "ticket_office": { + "lat": 31.0667, + "lng": 35.6962 + } + }, + "is_verified": true, + "curator": "وزارة الأوقاف والشؤون والمقدسات الإسلامية / لجنة المقامات", + "metadata": { + "country": "الأردن", + "curator": "وزارة الأوقاف والشؤون والمقدسات الإسلامية / لجنة المقامات", + "trail_name": "مسار مقامات الصحابة والسياحة الدينية" + }, + "site_polygon": null, + "admission": { + "is_ticketed": false, + "jordan_pass_included": false, + "rates": [ + { + "visitor_type": "all", + "amount": 0, + "currency": "JOD" + } + ] + } + }, + { + "id": 304, + "slug": "maqam-shuaib-wadi-shuaib", + "name_ar": "مقام وضريح النبي شعيب التاريخي في وادي شعيب", + "name_en": "Prophet Shuaib Shrine in Wadi Shuaib", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "البلقاء", + "category": "religious_heritage", + "tier": "Tier-2 National Heritage Monument", + "era": "الإسلامي والأيوبي والحديث / Islamic & Ayyubid", + "narrative_ar": "مقام تاريخي ومسجد جامع يقع في وادي شعيب الخصيب المشرف على طريق القدس وعمان القديم بالقرب من السلط؛ يضم ضريح النبي شعيب عليه السلام نبي أهل مدين، ويشهد توافد مئات الآلاف من الزوار سنوياً.", + "narrative": "مقام تاريخي ومسجد جامع يقع في وادي شعيب الخصيب المشرف على طريق القدس وعمان القديم بالقرب من السلط؛ يضم ضريح النبي شعيب عليه السلام نبي أهل مدين، ويشهد توافد مئات الآلاف من الزوار سنوياً.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/3/36/Maqam_Nabi_Shuaib_Jordan.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/3/36/Maqam_Nabi_Shuaib_Jordan.jpg", + "centroid": { + "lat": 31.9664, + "lng": 35.698 + }, + "gate": { + "lat": 31.9662, + "lng": 35.6983 + }, + "parking": { + "lat": 31.9659, + "lng": 35.6988 + }, + "ticket": { + "lat": 31.9663, + "lng": 35.6982 + }, + "coordinates": { + "centroid": { + "lat": 31.9664, + "lng": 35.698 + }, + "access_gate": { + "lat": 31.9662, + "lng": 35.6983 + }, + "parking": { + "lat": 31.9659, + "lng": 35.6988 + }, + "ticket_office": { + "lat": 31.9663, + "lng": 35.6982 + } + }, + "is_verified": true, + "curator": "وزارة الأوقاف والشؤون والمقدسات الإسلامية", + "metadata": { + "country": "الأردن", + "curator": "وزارة الأوقاف والشؤون والمقدسات الإسلامية", + "trail_name": "مسار مقامات الأنبياء والتراث الروحي" + }, + "site_polygon": null, + "admission": { + "is_ticketed": false, + "jordan_pass_included": false, + "rates": [ + { + "visitor_type": "all", + "amount": 0, + "currency": "JOD" + } + ] + } + }, + { + "id": 305, + "slug": "maqam-haroun-jabal-haroun", + "name_ar": "مقام وضريح النبي هارون على قمة جبل هارون في البترا", + "name_en": "Prophet Aaron Shrine atop Mount Aaron in Petra", + "country": "الأردن", + "country_en": "Jordan", + "governorate": "معان", + "category": "religious_heritage", + "tier": "Tier-2 National Heritage Monument", + "era": "المملوكي (السلطان الناصر محمد بن قلاوون) / Mamluk - 1339 AD", + "narrative_ar": "مسجد ومقام مملوكي أبيض يتربع على أعلى قمة في منطقة البترا (1350 متراً فوق سطح البحر) شيده السلطان المملوكي الملك الناصر محمد بن قلاوون عام 1339م فوق ضريح النبي هارون عليه السلام شقيق موسى عليه السلام.", + "narrative": "مسجد ومقام مملوكي أبيض يتربع على أعلى قمة في منطقة البترا (1350 متراً فوق سطح البحر) شيده السلطان المملوكي الملك الناصر محمد بن قلاوون عام 1339م فوق ضريح النبي هارون عليه السلام شقيق موسى عليه السلام.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/6/66/Jabal_Haroun_Shrine.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/6/66/Jabal_Haroun_Shrine.jpg", + "centroid": { + "lat": 30.3168, + "lng": 35.4042 + }, + "gate": { + "lat": 30.3248, + "lng": 35.4705 + }, + "parking": { + "lat": 30.3262, + "lng": 35.4805 + }, + "ticket": { + "lat": 30.3253, + "lng": 35.4795 + }, + "coordinates": { + "centroid": { + "lat": 30.3168, + "lng": 35.4042 + }, + "access_gate": { + "lat": 30.3248, + "lng": 35.4705 }, "parking": { "lat": 30.3262, @@ -28,326 +4049,117 @@ "lng": 35.4795 } }, + "is_verified": true, + "curator": "سلطة إقليم البترا التنموي السياحي / وزارة الأوقاف", "metadata": { - "curator": "Petra Development and Tourism Region Authority (PDTRA)", - "gallery": [ + "country": "الأردن", + "curator": "سلطة إقليم البترا التنموي السياحي / وزارة الأوقاف", + "trail_name": "مسار جبل هارون النبطي والمملوكي" + }, + "site_polygon": null, + "admission": { + "is_ticketed": true, + "jordan_pass_included": true, + "rates": [ { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Treasury_petra_crop.jpeg/1200px-Treasury_petra_crop.jpeg", - "author": "Diego Delso", - "license": "CC BY-SA 4.0", - "caption_ar": "واجهة الخزنة النبطية المنحوتة في الصخر", - "source_url": "https://commons.wikimedia.org/wiki/File:Treasury_petra_crop.jpeg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/The_Monastery%2C_Petra%2C_Jordan8.jpg/1200px-The_Monastery%2C_Petra%2C_Jordan8.jpg", - "author": "Dennis Jarvis", - "license": "CC BY-SA 2.0", - "caption_ar": "معبد الدير المهيب في أعلى جبال البترا", - "source_url": "https://commons.wikimedia.org/wiki/File:The_Monastery,_Petra,_Jordan8.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/The_Siq%2C_Petra%2C_Jordan.jpg/1200px-The_Siq%2C_Petra%2C_Jordan.jpg", - "author": "Sylvain L.", - "license": "CC BY-SA 2.0", - "caption_ar": "ممر السيق الصخري المؤدي إلى الخزنة", - "source_url": "https://commons.wikimedia.org/wiki/File:The_Siq,_Petra,_Jordan.jpg" + "visitor_type": "all", + "amount": 0, + "currency": "JOD" } - ], - "unesco_id": 326, - "opening_hours": "06:00 - 18:00" + ] } }, { - "id": 2, - "slug": "amman-citadel", - "name_ar": "جبل القلعة - عمان", - "name_en": "Amman Citadel (Jabal Al-Qal'a)", - "category": "archaeological_site", - "era": "Roman / Umayyad", - "narrative_ar": "مقر الحكم التاريخي لعمان عبر العصور العمونية والرومانية والأموية.", - "image_url": null, - "governorate": "Amman", - "country": "الأردن", - "coordinates": { - "centroid": { - "lat": 31.9539, - "lng": 35.935 - }, - "access_gate": { - "lat": 31.9545, - "lng": 35.9345 - }, - "parking": { - "lat": 31.9546, - "lng": 35.9338 - }, - "ticket_office": { - "lat": 31.954, - "lng": 35.9343 - } - }, - "metadata": {} - }, - { - "id": 3, - "slug": "jerash-south-gate", - "name_ar": "مدينة جرش الأثرية - البوابة الجنوبية", - "name_en": "Jerash Ruins - South Gate & Oval Plaza", - "category": "archaeological_site", - "era": "Roman", - "narrative_ar": "بومبي الشرق، إحدى مدن حلف الديكابولس العشر وأعظم المدن الرومانية المحفوظة.", - "image_url": null, - "governorate": "Jerash", - "country": "الأردن", - "coordinates": { - "centroid": { - "lat": 32.2723, - "lng": 35.8913 - }, - "access_gate": { - "lat": 32.2731, - "lng": 35.8924 - }, - "parking": { - "lat": 32.2738, - "lng": 35.8935 - }, - "ticket_office": { - "lat": 32.2729, - "lng": 35.8926 - } - }, - "metadata": {} - }, - { - "id": 4, - "slug": "ajloun-castle", - "name_ar": "قلعة عجلون (قلعة الربض)", - "name_en": "Ajloun Castle (Qal'at Ar-Rabad)", - "category": "historic_palace", - "era": "Ayyubid", - "narrative_ar": "شيدها القائد عز الدين أسامة أحد قادة صلاح الدين الأيوبي عام 1184م لحماية طرق القوافل.", - "image_url": null, - "governorate": "Ajloun", - "country": "الأردن", - "coordinates": { - "centroid": { - "lat": 32.3253, - "lng": 35.7275 - }, - "access_gate": { - "lat": 32.3251, - "lng": 35.7282 - }, - "parking": { - "lat": 32.3248, - "lng": 35.729 - }, - "ticket_office": { - "lat": 32.3252, - "lng": 35.728 - } - }, - "metadata": {} - }, - { - "id": 5, - "slug": "karak-castle", - "name_ar": "قلعة الكرك التاريخية", - "name_en": "Karak Castle", - "category": "historic_palace", - "era": "Crusader / Mamluk", - "narrative_ar": "من أعظم القلاع الحصينة في بلاد الشام وإحدى مراكز السيادة الإدارية والعسكرية عبر التاريخ.", - "image_url": null, - "governorate": "Karak", - "country": "الأردن", - "coordinates": { - "centroid": { - "lat": 31.1804, - "lng": 35.7018 - }, - "access_gate": { - "lat": 31.1812, - "lng": 35.7025 - }, - "parking": { - "lat": 31.1815, - "lng": 35.7032 - }, - "ticket_office": { - "lat": 31.181, - "lng": 35.7023 - } - }, - "metadata": {} - }, - { - "id": 6, - "slug": "roman-theater-amman", - "name_ar": "المدرج الروماني - وسط البلد", - "name_en": "Amman Roman Theater", - "category": "archaeological_site", - "era": "Roman", - "narrative_ar": "مسرح روماني يتسع لنحو 6000 متفرج في قلب فيلادلفيا القديمة.", - "image_url": null, - "governorate": "Amman", - "country": "الأردن", - "coordinates": { - "centroid": { - "lat": 31.9515, - "lng": 35.9392 - }, - "access_gate": { - "lat": 31.9518, - "lng": 35.9388 - }, - "parking": { - "lat": 31.9525, - "lng": 35.938 - }, - "ticket_office": { - "lat": 31.9516, - "lng": 35.9389 - } - }, - "metadata": {} - }, - { - "id": 7, - "slug": "umm-qais-gadara", - "name_ar": "أم قيس (جدارا)", - "name_en": "Umm Qais (Gadara Ruins)", - "category": "archaeological_site", - "era": "Greco-Roman", - "narrative_ar": "مطلة على بحيرة طبريا وهضبة الجولان ونهر اليرموك، بلدة الفلاسفة والشعراء.", - "image_url": null, - "governorate": "Irbid", - "country": "الأردن", - "coordinates": { - "centroid": { - "lat": 32.6534, - "lng": 35.6826 - }, - "access_gate": { - "lat": 32.6538, - "lng": 35.684 - }, - "parking": { - "lat": 32.6542, - "lng": 35.6845 - }, - "ticket_office": { - "lat": 32.6536, - "lng": 35.6838 - } - }, - "metadata": {} - }, - { - "id": 8, - "slug": "babylon-ancient-city", + "id": 201, + "slug": "babylon-ishtar-gate", "name_ar": "مدينة بابل الأثرية وبوابة عشتار", - "name_en": "Ancient City of Babylon & Ishtar Gate", - "category": "archaeological_site", - "era": "Neo-Babylonian", - "narrative_ar": "عاصمة الإمبراطورية البابلية الحديثة ومقر حدائق بابل المعلقة وبوابة عشتار العظيمة ومسلة حمورابي وموقع التراث العالمي لليونسكو.", - "image_url": null, + "name_en": "Ancient City of Babylon and Ishtar Gate", + "country": "العراق", + "country_en": "Iraq", "governorate": "Babil", - "country": "الأردن", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "البابلي الحديث (القرن السادس ق.م / نبوخذنصر الثاني)", + "narrative_ar": "شيدت بابل في عهد الملك نبوخذ نصر الثاني لتكون عاصمة الإمبراطورية البابلية الحديثة ومركزاً كونياً للعمارة والعلوم والتخطيط الحضري المبكر في بلاد الرافدين. يضم الموقع شارع الموكب الفخم، وأساسات بوابة عشتار المزججة، وقصور بابل الملكية وأسوارها الشاهقة.", + "narrative": "شيدت بابل في عهد الملك نبوخذ نصر الثاني لتكون عاصمة الإمبراطورية البابلية الحديثة ومركزاً كونياً للعمارة والعلوم والتخطيط الحضري المبكر في بلاد الرافدين. يضم الموقع شارع الموكب الفخم، وأساسات بوابة عشتار المزججة، وقصور بابل الملكية وأسوارها الشاهقة.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/7/78/Ishtar_Gate_Babylon_Iraq.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/7/78/Ishtar_Gate_Babylon_Iraq.jpg", + "centroid": { + "lat": 32.5422, + "lng": 44.421 + }, + "gate": { + "lat": 32.5358, + "lng": 44.4265 + }, + "parking": { + "lat": 32.5352, + "lng": 44.4272 + }, + "ticket": { + "lat": 32.5361, + "lng": 44.4262 + }, "coordinates": { "centroid": { "lat": 32.5422, - "lng": 44.4211 + "lng": 44.421 }, "access_gate": { - "lat": 32.5375, - "lng": 44.4238 + "lat": 32.5358, + "lng": 44.4265 }, "parking": { - "lat": 32.5369, - "lng": 44.4245 + "lat": 32.5352, + "lng": 44.4272 }, "ticket_office": { - "lat": 32.5378, - "lng": 44.4235 + "lat": 32.5361, + "lng": 44.4262 } }, + "is_verified": true, + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", "metadata": { - "curator": "State Board of Antiquities & Heritage", "unesco_id": 278, - "entry_fee_iqd": 5000, - "opening_hours": "08:00 - 17:00" - } - }, - { - "id": 9, - "slug": "erbil-citadel", - "name_ar": "قلعة أربيل التاريخية", - "name_en": "Erbil Citadel", - "category": "archaeological_site", - "era": "ما قبل التاريخ إلى العثماني / Prehistoric to Ottoman", - "narrative_ar": "تعتبر قلعة أربيل إحدى أقدم المستوطنات البشرية المأهولة بشكل متواصل في التاريخ؛ إذ ترتفع لنحو 30 متراً فوق سهل أربيل مشكلة تلاً بيضاوياً ناتجاً عن تراكم الطبقات الأثرية لآلاف السنين. تعاقبت على القلعة الحضارات الآشورية والميدية والعباسية والعثمانية، متيحة نسيجاً عمرانياً تراثياً فريداً تطل أزقته وقصوره التقليدية على قلب المدينة المعاصرة. حظيت القلعة باعتراف دولي بارز بانضمامها إلى لائحة التراث العالمي لليونسكو عام 2014 كنموذج استثنائي لتطور المستوطنات المحصنة عبر التاريخ.", - "image_url": "https://upload.wikimedia.org/wikipedia/commons/9/99/Erbil_Citadel.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original", - "governorate": "Erbil", - "country": "الأردن", - "coordinates": { - "centroid": { - "lat": 36.191, - "lng": 44.0091 - }, - "access_gate": { - "lat": 36.1895, - "lng": 44.0092 - }, - "parking": { - "lat": 36.1884, - "lng": 44.0086 - }, - "ticket_office": { - "lat": 36.1898, - "lng": 44.0093 - } + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "08:30 - 17:30 يومياً" }, - "metadata": { - "curator": "المفوضية العليا لإحياء قلعة أربيل (HCECR)", - "gallery": [ - { - "url": "https://upload.wikimedia.org/wikipedia/commons/9/99/Erbil_Citadel.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original", - "author": "Wahlen", - "license": "CC0", - "caption_ar": "الواجهة الجنوبية الشامخة لقلعة أربيل المطلة على حديقة الشار والأسواق", - "source_url": "https://commons.wikimedia.org/wiki/File:Erbil_Citadel.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/c/cf/The_Citadel_of_Erbil%2C_Hawler%2C_Erbil_Governorate%2C_Iraq.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original", - "author": "Osama Shukir Muhammed Amin FRCP(Glasg)", - "license": "CC BY-SA 4.0", - "caption_ar": "منظر بانورامي لمحيط قلعة أربيل والجدران الخارجية للبيوت التراثية", - "source_url": "https://commons.wikimedia.org/wiki/File:The_Citadel_of_Erbil%2C_Hawler%2C_Erbil_Governorate%2C_Iraq.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/f/f4/46._Erbil_Citadel%2C_Erbil_Governorate%2C_Iraqi_Kurdistan.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original", - "author": "Osama Shukir Muhammed Amin FRCP(Glasg)", - "license": "CC BY-SA 4.0", - "caption_ar": "المسار الحجري والأزقة الداخلية التي تخترق نسيج قلعة أربيل المعماري", - "source_url": "https://commons.wikimedia.org/wiki/File:46._Erbil_Citadel%2C_Erbil_Governorate%2C_Iraqi_Kurdistan.jpg" - } - ], - "unesco_id": 1437, - "opening_hours": "09:00 - 18:00 Daily" - } + "site_polygon": null, + "admission": null }, { - "id": 10, + "id": 202, "slug": "ziggurat-of-ur", "name_ar": "زقورة أور الكبرى ومجمع تل المقير", "name_en": "Great Ziggurat of Ur and Tell al-Muqayyar", - "category": "archaeological_site", - "era": "السومري - سلالة أور الثالثة / Sumerian - Ur III", - "narrative_ar": "شيد الملك السومري أور-نامو وابنه شولجي زقورة أور في القرن الحادي والعشرين قبل الميلاد لتكون معبداً مقدساً مكرساً لعبادة إله القمر نانا في عاصمة سلالة أور الثالثة. تمثل الزقورة درة العمارة الدينية الرافدينية المصنوعة من قوالب الآجر المحروق المرصوف بالقار، وتتميز بسلالمها الأثرية الشامخة التي ترتفع نحو السماء. أدرج مجمع أور الأثري ضمن لائحة التراث العالمي لليونسكو عام 2016 ضمن ملف أهوار جنوب العراق والمواقع الأثرية السومرية.", - "image_url": "https://upload.wikimedia.org/wikipedia/commons/6/6b/Ziggarat_of_Ur_001.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original", + "country": "العراق", + "country_en": "Iraq", "governorate": "Dhi Qar", - "country": "الأردن", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "السومري - سلالة أور الثالثة (القرن 21 ق.م)", + "narrative_ar": "شيد الملك السومري أور-نامو زقورة أور في القرن الحادي والعشرين قبل الميلاد لتكون معبداً مقدساً مكرساً للإله نانا في عاصمة سلالة أور الثالثة وموطن النبي إبراهيم عليه السلام. تمثل قمة فن العمارة الدينية السومرية المدرجة من الآجر الأحمر المنسوج بالقار.", + "narrative": "شيد الملك السومري أور-نامو زقورة أور في القرن الحادي والعشرين قبل الميلاد لتكون معبداً مقدساً مكرساً للإله نانا في عاصمة سلالة أور الثالثة وموطن النبي إبراهيم عليه السلام.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/6/69/Ziggarat_of_Ur_001.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/6/69/Ziggarat_of_Ur_001.jpg", + "centroid": { + "lat": 30.9628, + "lng": 46.1031 + }, + "gate": { + "lat": 30.9642, + "lng": 46.1065 + }, + "parking": { + "lat": 30.965, + "lng": 46.1075 + }, + "ticket": { + "lat": 30.9645, + "lng": 46.1068 + }, "coordinates": { "centroid": { "lat": 30.9628, @@ -366,159 +4178,1356 @@ "lng": 46.1068 } }, + "is_verified": true, + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", "metadata": { - "curator": "الهيئة العامة للآثار والتراث (SBAH)", - "gallery": [ - { - "url": "https://upload.wikimedia.org/wikipedia/commons/6/6b/Ziggarat_of_Ur_001.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original", - "author": "Tla2006 at English Wikipedia", - "license": "Public domain", - "caption_ar": "الواجهة والسلالم الرئيسة لزقورة أور السومرية بعد الترميم الجزئي", - "source_url": "https://commons.wikimedia.org/wiki/File:Ziggarat_of_Ur_001.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/9/95/Great_Ziggurat_of_Ur.JPG?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original", - "author": "Defense Dept. photo by Cherie A. Thurlby", - "license": "Public domain", - "caption_ar": "منظر زاوي لقاعدة زقورة أور وجدران الدعم التاريخية", - "source_url": "https://commons.wikimedia.org/wiki/File:Great_Ziggurat_of_Ur.JPG" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/a/aa/Ziggurat_of_Ur_from_bottom_of_main_stair.jpg?utm_source=commons.wikimedia.org&utm_campaign=imageinfo&utm_content=original", - "author": "Kaufingdude", - "license": "CC BY-SA 3.0", - "caption_ar": "المصعد الرئيسي للزقورة من أسفل الدرج المؤدي إلى المعبد العلوي", - "source_url": "https://commons.wikimedia.org/wiki/File:Ziggurat_of_Ur_from_bottom_of_main_stair.jpg" - } - ], "unesco_id": 1481, - "opening_hours": "08:00 - 17:00 Daily" - } + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "08:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null }, { - "id": 11, - "slug": "hatra-ancient-city", - "name_ar": "مدينة الحضر الأثرية ومملكة عربايا", - "name_en": "Ancient City of Hatra and Kingdom of Araba", - "category": "archaeological_site", - "era": "الفرثي ومملكة عربايا القديمة (القرن 2 ق.م - القرن 2 م)", - "narrative_ar": "أول موقع يسجل على لائحة التراث العالمي لليونسكو في العراق (1985)، وهي عاصمة أول مملكة عربية موثقة في الجزيرة الفراتية صمدت أمام حصار الأباطرة الرومان تراجان وسيبتيموس سيفيروس. تتميز بأسوارها الدائرية المزدوجة ومعبدها الشمسي الضخم وأعمدتها وأقواسها الحجرية الباهرة التي تمزج بين الفنون الهلنستية والرومانية والشرقية.", - "image_url": "https://commons.wikimedia.org/wiki/Special:FilePath/Hatra-Ruins-2008-3.jpg?width=1600", - "governorate": "Nineveh", + "id": 203, + "slug": "erbil-citadel", + "name_ar": "قلعة أربيل التاريخية", + "name_en": "Erbil Citadel", "country": "العراق", + "country_en": "Iraq", + "governorate": "Erbil", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "ما قبل التاريخ إلى العثماني (6000 عام من السكن المتواصل)", + "narrative_ar": "تعتبر قلعة أربيل إحدى أقدم المستوطنات البشرية المأهولة بشكل متواصل في التاريخ؛ إذ ترتفع لنحو 30 متراً فوق سهل أربيل مشكلة تلاً بيضاوياً ناتجاً عن تراكم الطبقات الأثرية لآلاف السنين وتتوجها أزقة عثمانية تقليدية وأسوار مطلة.", + "narrative": "تعتبر قلعة أربيل إحدى أقدم المستوطنات البشرية المأهولة بشكل متواصل في التاريخ.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/e/eb/Erbil_Citadel.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/e/eb/Erbil_Citadel.jpg", + "centroid": { + "lat": 36.191, + "lng": 44.0091 + }, + "gate": { + "lat": 36.1895, + "lng": 44.0092 + }, + "parking": { + "lat": 36.1884, + "lng": 44.0086 + }, + "ticket": { + "lat": 36.1898, + "lng": 44.0093 + }, "coordinates": { "centroid": { - "lat": 35.5892, - "lng": 42.7183 + "lat": 36.191, + "lng": 44.0091 }, "access_gate": { - "lat": 35.5904, - "lng": 42.7197 + "lat": 36.1895, + "lng": 44.0092 }, "parking": { - "lat": 35.5911, - "lng": 42.7206 + "lat": 36.1884, + "lng": 44.0086 }, "ticket_office": { - "lat": 35.5902, + "lat": 36.1898, + "lng": 44.0093 + } + }, + "is_verified": true, + "curator": "المفوضية العليا لإحياء قلعة أربيل (HCECR)", + "metadata": { + "unesco_id": 1437, + "country": "العراق", + "curator": "المفوضية العليا لإحياء قلعة أربيل (HCECR)", + "opening_hours": "09:00 - 18:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 204, + "slug": "samarra-great-mosque-malwiya", + "name_ar": "جامع سامراء الكبير والمئذنة الملوية", + "name_en": "Great Mosque of Samarra and Malwiya Minaret", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Saladin", + "category": "monument", + "tier": "Tier-1 Sovereign Anchor", + "era": "العباسي (851 م / الخليفة المتوكل على الله)", + "narrative_ar": "شيد الخليفة العباسي المتوكل على الله جامع سامراء الكبير ومئذنته الملوية الفريدة عام 851 ميلادية، ليغدو آنذاك أكبر مسجد في العالم الإسلامي مجسداً ذروة القوة العمرانية للخلافة العباسية بتصميمه الحلزوني الصاعد نحو السماء بارتفاع 52 متراً.", + "narrative": "شيد الخليفة العباسي المتوكل على الله جامع سامراء الكبير ومئذنته الملوية الفريدة عام 851 ميلادية.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/4/4c/Great_Mosque_of_Samarra.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/4/4c/Great_Mosque_of_Samarra.jpg", + "centroid": { + "lat": 34.2072, + "lng": 43.8805 + }, + "gate": { + "lat": 34.2058, + "lng": 43.8798 + }, + "parking": { + "lat": 34.2052, + "lng": 43.8792 + }, + "ticket": { + "lat": 34.206, + "lng": 43.8801 + }, + "coordinates": { + "centroid": { + "lat": 34.2072, + "lng": 43.8805 + }, + "access_gate": { + "lat": 34.2058, + "lng": 43.8798 + }, + "parking": { + "lat": 34.2052, + "lng": 43.8792 + }, + "ticket_office": { + "lat": 34.206, + "lng": 43.8801 + } + }, + "is_verified": true, + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "metadata": { + "unesco_id": 276, + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "08:00 - 18:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 205, + "slug": "hatra-sun-temple", + "name_ar": "مدينة الحضر الأثرية ومعبد الشمس", + "name_en": "Hatra Ruins and Temple of the Sun", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Nineveh", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "مملكة الحضر العربية والفرثي (القرن 1 - 2 م)", + "narrative_ar": "ازدهرت مملكة الحضر العربية خلال القرنين الأول والثاني للميلاد في قلب الجزيرة بين دجلة والفرات، لتصبح مركزاً تجارياً ودينياً محصناً صمد ببراعة أمام حصارات الجيوش الرومانية، وتشتهر بمعبدها الشمس الكهلاني ذي العقود والأقواس الحجرية الباذخة.", + "narrative": "ازدهرت مملكة الحضر العربية خلال القرنين الأول والثاني للميلاد.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/0/0e/Hatra-71339.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/0/0e/Hatra-71339.jpg", + "centroid": { + "lat": 35.5898, + "lng": 42.7163 + }, + "gate": { + "lat": 35.5925, + "lng": 42.719 + }, + "parking": { + "lat": 35.5935, + "lng": 42.7202 + }, + "ticket": { + "lat": 35.5928, + "lng": 42.7195 + }, + "coordinates": { + "centroid": { + "lat": 35.5898, + "lng": 42.7163 + }, + "access_gate": { + "lat": 35.5925, + "lng": 42.719 + }, + "parking": { + "lat": 35.5935, + "lng": 42.7202 + }, + "ticket_office": { + "lat": 35.5928, "lng": 42.7195 } }, + "is_verified": true, + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", "metadata": { - "unesco": "UNESCO #277", + "unesco_id": 277, "country": "العراق", - "curator": "State Board of Antiquities and Heritage Iraq (SBAH)", - "gallery": [ - { - "url": "https://commons.wikimedia.org/wiki/Special:FilePath/Hatra-Ruins-2008-3.jpg?width=1600", - "caption_ar": "مدينة الحضر الأثرية ومملكة عربايا" - } - ], - "opening_hours": "08:00 - 16:00 يومياً" - } + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "08:30 - 16:30 يومياً" + }, + "site_polygon": null, + "admission": null }, { - "id": 12, - "slug": "samarra-malwiya", - "name_ar": "مئذنة الملوية والمسجد الجامع في سامراء", - "name_en": "Malwiya Minaret & Great Mosque of Samarra", - "category": "archaeological_site", - "era": "Abbasid", - "narrative_ar": "المئذنة الحلزونية الشهيرة والمسجد الجامع الذي أمر ببنائه الخليفة العباسي المتوكل على الله عام 851م، تحفة العمارة الإسلامية الفريدة.", - "image_url": null, + "id": 206, + "slug": "ashur-qal-at-sherqat", + "name_ar": "مدينة آشور الأثرية وقلعة الشرقاط", + "name_en": "Ancient City of Ashur and Qal'at Sherqat", + "country": "العراق", + "country_en": "Iraq", "governorate": "Saladin", - "country": "الأردن", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "الآشوري (الألف الثالث قبل الميلاد)", + "narrative_ar": "تأسست مدينة آشور في الألف الثالث قبل الميلاد على جرف صخري يطل على نهر دجلة، لتكون العاصمة الدينية والسياسية الأولى للإمبراطورية الآشورية والمهد الروحي للإله القومي آشور ومثوى ملوكها العظام.", + "narrative": "تأسست مدينة آشور في الألف الثالث قبل الميلاد على جرف صخري يطل على نهر دجلة.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/3/30/Ashur_%28Qal%27at_Sherqat%29-115186.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/3/30/Ashur_%28Qal%27at_Sherqat%29-115186.jpg", + "centroid": { + "lat": 35.4567, + "lng": 43.2612 + }, + "gate": { + "lat": 35.4542, + "lng": 43.2568 + }, + "parking": { + "lat": 35.4535, + "lng": 43.2555 + }, + "ticket": { + "lat": 35.454, + "lng": 43.2563 + }, "coordinates": { "centroid": { - "lat": 34.2064, - "lng": 43.8803 + "lat": 35.4567, + "lng": 43.2612 }, "access_gate": { - "lat": 34.2052, - "lng": 43.8812 + "lat": 35.4542, + "lng": 43.2568 }, "parking": { - "lat": 34.2045, - "lng": 43.882 + "lat": 35.4535, + "lng": 43.2555 }, "ticket_office": { - "lat": 34.2054, - "lng": 43.881 + "lat": 35.454, + "lng": 43.2563 } }, + "is_verified": true, + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", "metadata": { - "curator": "State Board of Antiquities & Heritage", - "unesco_id": 276, - "entry_fee_iqd": 3000, - "opening_hours": "08:00 - 17:30" - } + "unesco_id": 1130, + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "08:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null }, { - "id": 13, - "slug": "al-mustansiriya-baghdad", - "name_ar": "المدرسة المستنصرية وشارع المتنبي", - "name_en": "Al-Mustansiriya Madrasah & Al-Mutanabbi Street", - "category": "historic_palace", - "era": "Abbasid / Islamic", - "narrative_ar": "أقدم جامعة إسلامية متكاملة شيدها الخليفة المستنصر بالله عام 1233م على ضفاف نهر دجلة، وتجاورها القشلة وشارع المتنبي وسوق السراي.", - "image_url": null, - "governorate": "Baghdad", - "country": "الأردن", + "id": 207, + "slug": "uruk-warka", + "name_ar": "مدينة أوروك الأثرية (الوركاء)", + "name_en": "Ancient City of Uruk (Warka)", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Al-Muthanna", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "السومري (الألف الرابع ق.م / مهد الكتابة المسمارية)", + "narrative_ar": "أول حاضرة مدنية كبرى في تاريخ البشرية وموطن أسطورة كلكامش. في الوركاء اخترع الإنسان السومري الكتابة المسمارية التصويرية حوالي 3200 قبل الميلاد، ودشن عصر التخطيط المعماري بالمعابد البيضاء والفسيفساء المخروطية الملونة.", + "narrative": "أول حاضرة مدنية كبرى في تاريخ البشرية وموطن أسطورة كلكامش.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/d/df/Eanna4.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/d/df/Eanna4.jpg", + "centroid": { + "lat": 31.3222, + "lng": 45.6358 + }, + "gate": { + "lat": 31.3205, + "lng": 45.6322 + }, + "parking": { + "lat": 31.3195, + "lng": 45.631 + }, + "ticket": { + "lat": 31.3202, + "lng": 45.6318 + }, "coordinates": { "centroid": { - "lat": 33.3387, - "lng": 44.3892 + "lat": 31.3222, + "lng": 45.6358 }, "access_gate": { - "lat": 33.3384, + "lat": 31.3205, + "lng": 45.6322 + }, + "parking": { + "lat": 31.3195, + "lng": 45.631 + }, + "ticket_office": { + "lat": 31.3202, + "lng": 45.6318 + } + }, + "is_verified": true, + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "metadata": { + "unesco_id": 1481, + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "08:00 - 16:30 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 208, + "slug": "ctesiphon-arch-madain", + "name_ar": "طاق كسرى وإيوان المدائن الأثري", + "name_en": "Arch of Ctesiphon (Taq Kasra)", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Baghdad", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "الساساني (القرن 6 الميلادي)", + "narrative_ar": "أضخم وأعلى طاق مقبب مشيد بالآجر غير المسلح في العالم بارتفاع يتجاوز 37 متراً، يمثل قاعة العرش الملكي في العاصمة الساسانية المدائن (قطسيفون) وشاهداً تاريخياً على الفتح الإسلامي لبلاد فارس بقيادة سعد بن أبي وقاص.", + "narrative": "أضخم وأعلى طاق مقبب مشيد بالآجر غير المسلح في العالم.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/6/6f/Taq-e_Kasra_2017.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/6/6f/Taq-e_Kasra_2017.jpg", + "centroid": { + "lat": 33.0936, + "lng": 44.5811 + }, + "gate": { + "lat": 33.0945, + "lng": 44.5823 + }, + "parking": { + "lat": 33.0952, + "lng": 44.5832 + }, + "ticket": { + "lat": 33.0943, + "lng": 44.5821 + }, + "coordinates": { + "centroid": { + "lat": 33.0936, + "lng": 44.5811 + }, + "access_gate": { + "lat": 33.0945, + "lng": 44.5823 + }, + "parking": { + "lat": 33.0952, + "lng": 44.5832 + }, + "ticket_office": { + "lat": 33.0943, + "lng": 44.5821 + } + }, + "is_verified": true, + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "metadata": { + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "08:00 - 18:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 209, + "slug": "al-ukhaidir-fortress", + "name_ar": "قصر وحصن الأخيضر التاريخي", + "name_en": "Al-Ukhaidir Fortress & Palace", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Karbala", + "category": "historic_palace", + "tier": "Tier-1 Sovereign Anchor", + "era": "العباسي المبكر (778 م / الأمير عيسى بن موسى)", + "narrative_ar": "حصن وقصر صحراوي عباسي منيع يقع جنوب غرب كربلاء، يعكس الابتكار المعماري العباسي بالأسوار الحجرية الضخمة، الأبراج نصف الدائرية، والسراديب والدهاليز الدفاعية، ويعد نموذجاً مبكراً للعمارة العسكرية الإسلامية في بادية الشام والعراق.", + "narrative": "حصن وقصر صحراوي عباسي منيع يقع جنوب غرب كربلاء.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/8/82/Ukhaidir_Palace.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/8/82/Ukhaidir_Palace.jpg", + "centroid": { + "lat": 32.4431, + "lng": 43.6022 + }, + "gate": { + "lat": 32.4445, + "lng": 43.604 + }, + "parking": { + "lat": 32.4452, + "lng": 43.605 + }, + "ticket": { + "lat": 32.4448, + "lng": 43.6045 + }, + "coordinates": { + "centroid": { + "lat": 32.4431, + "lng": 43.6022 + }, + "access_gate": { + "lat": 32.4445, + "lng": 43.604 + }, + "parking": { + "lat": 32.4452, + "lng": 43.605 + }, + "ticket_office": { + "lat": 32.4448, + "lng": 43.6045 + } + }, + "is_verified": true, + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "metadata": { + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "08:30 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 210, + "slug": "kish-tell-al-uhaymir", + "name_ar": "مدينة كيش السومرية وتل الأحيمر الأثري", + "name_en": "Ancient Sumerian City of Kish and Tell al-Uhaymir", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Babil", + "category": "archaeological_site", + "tier": "Heritage Landmark", + "era": "السومري المبكر (الألف الثالث قبل الميلاد)", + "narrative_ar": "أول مدينة هبطت فيها الملوكية بعد الطوفان العظيم وفق ثبت الملوك السومريين، تقع شرق بابل وتعرف أطلالها بتل الأحيمر نسبة للآجر الأحمر. تضم زقورة الإله زبابا الحمراء وبقايا قصر الملوك السومريين الأوائل والمكتبات المسمارية القديمة.", + "narrative": "أول مدينة هبطت فيها الملوكية بعد الطوفان العظيم وفق ثبت الملوك السومريين.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Ruins_of_the_ziggurat_of_the_ancient_city_of_Kish%2C_Tell_al-Uhaymir%2C_Iraq.jpg/1200px-Ruins_of_the_ziggurat_of_the_ancient_city_of_Kish%2C_Tell_al-Uhaymir%2C_Iraq.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Ruins_of_the_ziggurat_of_the_ancient_city_of_Kish%2C_Tell_al-Uhaymir%2C_Iraq.jpg/1200px-Ruins_of_the_ziggurat_of_the_ancient_city_of_Kish%2C_Tell_al-Uhaymir%2C_Iraq.jpg", + "centroid": { + "lat": 32.5539, + "lng": 44.6528 + }, + "gate": { + "lat": 32.5548, + "lng": 44.6539 + }, + "parking": { + "lat": 32.5555, + "lng": 44.6548 + }, + "ticket": { + "lat": 32.5546, + "lng": 44.6537 + }, + "coordinates": { + "centroid": { + "lat": 32.5539, + "lng": 44.6528 + }, + "access_gate": { + "lat": 32.5548, + "lng": 44.6539 + }, + "parking": { + "lat": 32.5555, + "lng": 44.6548 + }, + "ticket_office": { + "lat": 32.5546, + "lng": 44.6537 + } + }, + "is_verified": true, + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "metadata": { + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "08:00 - 16:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 211, + "slug": "dur-sharrukin-khorsabad", + "name_ar": "دور شروكين - خورسيباد عاصمة سرجون الثاني", + "name_en": "Dur-Sharrukin (Khorsabad) Ancient Assyrian Capital", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Nineveh", + "category": "archaeological_site", + "tier": "Heritage Landmark", + "era": "الآشوري الحديث (717 - 706 ق.م / سرجون الثاني)", + "narrative_ar": "العاصمة الآشورية الملكية الحصينة التي بناها الإمبراطور سرجون الثاني شمال نينوى، واشتهرت بقصرها الملكي الفسيح المحاط بتماثيل الثيران المجنحة (اللاماسو) الضخمة والنقوش الحجرية البديعة التي وثقت فتوحات الإمبراطورية الآشورية.", + "narrative": "العاصمة الآشورية الملكية الحصينة التي بناها الإمبراطور سرجون الثاني شمال نينوى.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Lamassu_from_Khorsabad_in_the_Oriental_Institute_Museum%2C_Chicago.jpg/1200px-Lamassu_from_Khorsabad_in_the_Oriental_Institute_Museum%2C_Chicago.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Lamassu_from_Khorsabad_in_the_Oriental_Institute_Museum%2C_Chicago.jpg/1200px-Lamassu_from_Khorsabad_in_the_Oriental_Institute_Museum%2C_Chicago.jpg", + "centroid": { + "lat": 36.5089, + "lng": 43.2289 + }, + "gate": { + "lat": 36.5098, + "lng": 43.2301 + }, + "parking": { + "lat": 36.5105, + "lng": 43.231 + }, + "ticket": { + "lat": 36.5096, + "lng": 43.2299 + }, + "coordinates": { + "centroid": { + "lat": 36.5089, + "lng": 43.2289 + }, + "access_gate": { + "lat": 36.5098, + "lng": 43.2301 + }, + "parking": { + "lat": 36.5105, + "lng": 43.231 + }, + "ticket_office": { + "lat": 36.5096, + "lng": 43.2299 + } + }, + "is_verified": true, + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "metadata": { + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "08:30 - 16:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 212, + "slug": "baghdad-abu-hanifa-shrine", + "name_ar": "جامع ومرقد الإمام أبي حنيفة النعمان (جامع الإمام الأعظم)", + "name_en": "Abu Hanifa Mosque & Shrine (Al-Imam Al-Adham)", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Baghdad", + "category": "religious_heritage", + "tier": "Religious & Historic Shrine", + "era": "العباسي والعثماني (تأسس 1067 م)", + "narrative_ar": "أحد أهم المعالم الدينية والتاريخية في بغداد عاصمة الخلافة العباسية، يقع في حي الأعظمية على ضفاف نهر دجلة، ويضم ضريح الإمام أبي حنيفة النعمان مؤسس المذهب الحنفي، والمدرسة الجلالية، وبرج الساعة الشهير.", + "narrative": "أحد أهم المعالم الدينية والتاريخية في بغداد عاصمة الخلافة العباسية.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Abu_Hanifa_Mosque%2C_Baghdad%2C_Iraq.jpg/1200px-Abu_Hanifa_Mosque%2C_Baghdad%2C_Iraq.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Abu_Hanifa_Mosque%2C_Baghdad%2C_Iraq.jpg/1200px-Abu_Hanifa_Mosque%2C_Baghdad%2C_Iraq.jpg", + "centroid": { + "lat": 33.3725, + "lng": 44.3581 + }, + "gate": { + "lat": 33.373, + "lng": 44.3588 + }, + "parking": { + "lat": 33.3736, + "lng": 44.3597 + }, + "ticket": { + "lat": 33.3728, + "lng": 44.3586 + }, + "coordinates": { + "centroid": { + "lat": 33.3725, + "lng": 44.3581 + }, + "access_gate": { + "lat": 33.373, + "lng": 44.3588 + }, + "parking": { + "lat": 33.3736, + "lng": 44.3597 + }, + "ticket_office": { + "lat": 33.3728, + "lng": 44.3586 + } + }, + "is_verified": true, + "curator": "ديوان الوقف السني العراقي والهيئة العامة للآثار", + "metadata": { + "country": "العراق", + "curator": "ديوان الوقف السني العراقي والهيئة العامة للآثار", + "opening_hours": "مفتوح للصلوات والزيارة 04:00 - 22:00" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 213, + "slug": "baghdad-abdul-qadir-kilani", + "name_ar": "جامع ومرقد الشيخ عبد القادر الكيلاني (الحضرة القادرية)", + "name_en": "Al-Khilani Shrine and Mosque (Qadiriyya Complex)", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Baghdad", + "category": "religious_heritage", + "tier": "Religious & Historic Shrine", + "era": "العباسي والعثماني (القرن 12 الميلادي)", + "narrative_ar": "مجمع تاريخي وروحي بارز في باب الشيخ في جانب الرصافة ببغداد، يضم مرقد الشيخ عبد القادر الكيلاني مؤسس الطريقة القادرية ومكتبة الحضرة القادرية الزاخرة بآلاف المخطوطات النادرة وقبة مزخرفة بالنقوش السلجوقية والعثمانية.", + "narrative": "مجمع تاريخي وروحي بارز في باب الشيخ في جانب الرصافة ببغداد.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Mosque_of_Abdul-Qadir_Gilani_03.jpg/1200px-Mosque_of_Abdul-Qadir_Gilani_03.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Mosque_of_Abdul-Qadir_Gilani_03.jpg/1200px-Mosque_of_Abdul-Qadir_Gilani_03.jpg", + "centroid": { + "lat": 33.3453, + "lng": 44.4072 + }, + "gate": { + "lat": 33.3458, + "lng": 44.4079 + }, + "parking": { + "lat": 33.3465, + "lng": 44.4088 + }, + "ticket": { + "lat": 33.3456, + "lng": 44.4077 + }, + "coordinates": { + "centroid": { + "lat": 33.3453, + "lng": 44.4072 + }, + "access_gate": { + "lat": 33.3458, + "lng": 44.4079 + }, + "parking": { + "lat": 33.3465, + "lng": 44.4088 + }, + "ticket_office": { + "lat": 33.3456, + "lng": 44.4077 + } + }, + "is_verified": true, + "curator": "الحضرة القادرية والهيئة العامة للآثار", + "metadata": { + "country": "العراق", + "curator": "الحضرة القادرية والهيئة العامة للآثار", + "opening_hours": "05:00 - 23:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 214, + "slug": "mustansiriya-madrasah", + "name_ar": "المدرسة المستنصرية التاريخية في بغداد", + "name_en": "Al-Mustansiriya Madrasah", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Baghdad", + "category": "monument", + "tier": "Tier-1 Sovereign Anchor", + "era": "العباسي (1233 م / الخليفة المستنصر بالله)", + "narrative_ar": "تعد المدرسة المستنصرية أقدم جامعة إسلامية متكاملة في العالم، أسسها الخليفة المستنصر بالله عام 1233م على ضفاف دجلة لتدريس المذاهب الفقهية الأربعة والطب والرياضيات والفلك والصيدلة وساعتها المائية الفلكية العجيبة.", + "narrative": "تعد المدرسة المستنصرية أقدم جامعة إسلامية متكاملة في العالم أسسها الخليفة المستنصر بالله عام 1233م.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Mustansiriya_Madrasah_01.jpg/1200px-Mustansiriya_Madrasah_01.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Mustansiriya_Madrasah_01.jpg/1200px-Mustansiriya_Madrasah_01.jpg", + "centroid": { + "lat": 33.3375, + "lng": 44.3888 + }, + "gate": { + "lat": 33.338, + "lng": 44.3895 + }, + "parking": { + "lat": 33.3388, + "lng": 44.3905 + }, + "ticket": { + "lat": 33.3378, + "lng": 44.3892 + }, + "coordinates": { + "centroid": { + "lat": 33.3375, + "lng": 44.3888 + }, + "access_gate": { + "lat": 33.338, "lng": 44.3895 }, "parking": { - "lat": 33.3375, - "lng": 44.3912 + "lat": 33.3388, + "lng": 44.3905 }, "ticket_office": { - "lat": 33.3385, - "lng": 44.3893 + "lat": 33.3378, + "lng": 44.3892 } }, + "is_verified": true, + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", "metadata": { - "curator": "Ministry of Culture, Tourism & Antiquities", - "entry_fee_iqd": 2000, - "opening_hours": "09:00 - 18:00" - } + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "09:00 - 15:00 يومياً" + }, + "site_polygon": null, + "admission": null }, { - "id": 14, + "id": 301, + "slug": "damascus-umayyad-mosque", + "name_ar": "الجامع الأموي في دمشق القديمة", + "name_en": "Umayyad Mosque Damascus Old City", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Damascus", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "الأموي (705 - 715 م / الخليفة الوليد بن عبد الملك)", + "narrative_ar": "بناه الخليفة الوليد بن عبد الملك عام 715 ميلادية، ويعد درة العمارة الإسلامية الخالدة بفسيفسائه الذهبية الخضراء وقبته النسر الشامخة ومآذنه الثلاث، يقع في قلب دمشق القديمة أقدم عاصمة مأهولة في العالم والمسجلة على قائمة اليونسكو.", + "narrative": "بناه الخليفة الوليد بن عبد الملك عام 715 ميلادية، ويعد درة العمارة الإسلامية بفسيفسائه الذهبية.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Umayyad_Mosque_Damascus.jpg/1200px-Umayyad_Mosque_Damascus.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Umayyad_Mosque_Damascus.jpg/1200px-Umayyad_Mosque_Damascus.jpg", + "centroid": { + "lat": 33.51159, + "lng": 36.30695 + }, + "gate": { + "lat": 33.5122, + "lng": 36.3078 + }, + "parking": { + "lat": 33.513, + "lng": 36.309 + }, + "ticket": { + "lat": 33.51205, + "lng": 36.30765 + }, + "coordinates": { + "centroid": { + "lat": 33.51159, + "lng": 36.30695 + }, + "access_gate": { + "lat": 33.5122, + "lng": 36.3078 + }, + "parking": { + "lat": 33.513, + "lng": 36.309 + }, + "ticket_office": { + "lat": 33.51205, + "lng": 36.30765 + } + }, + "is_verified": true, + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "metadata": { + "unesco_id": 20, + "country": "سوريا", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "opening_hours": "08:00 - 20:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 302, + "slug": "krak-des-chevaliers-hosn", + "name_ar": "قلعة الحصن التاريخية (حصن الأكراد)", + "name_en": "Krak des Chevaliers Medieval Fortress", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Homs", + "category": "historic_palace", + "tier": "Tier-1 Sovereign Anchor", + "era": "الصليبي والمملوكي (القرن 11 - 13 م / حررها السلطان بيبرس 1271 م)", + "narrative_ar": "أعظم وأكمل قلاع العصور الوسطى المحفوظة في العالم والمسجلة على قائمة التراث العالمي لليونسكو (2006). شيدت فوق نتوء صخري يتحكم بفتحة حمص، وتتميز بجدار دفاعي مزدوج، وخندق مائي منحوت في الصخر، وقاعة فرسان قوطية شاسعة، ومصلى صليبي تحول إلى مسجد بمحراب مملوكي بديع بعد فتح السلطان الظاهر بيبرس.", + "narrative": "أعظم وأكمل قلاع العصور الوسطى المحفوظة في العالم والمسجلة على قائمة التراث العالمي لليونسكو.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Crac_des_chevaliers_syria.jpeg/1200px-Crac_des_chevaliers_syria.jpeg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Crac_des_chevaliers_syria.jpeg/1200px-Crac_des_chevaliers_syria.jpeg", + "centroid": { + "lat": 34.7569, + "lng": 36.2944 + }, + "gate": { + "lat": 34.7577, + "lng": 36.2954 + }, + "parking": { + "lat": 34.7584, + "lng": 36.2963 + }, + "ticket": { + "lat": 34.7575, + "lng": 36.2952 + }, + "coordinates": { + "centroid": { + "lat": 34.7569, + "lng": 36.2944 + }, + "access_gate": { + "lat": 34.7577, + "lng": 36.2954 + }, + "parking": { + "lat": 34.7584, + "lng": 36.2963 + }, + "ticket_office": { + "lat": 34.7575, + "lng": 36.2952 + } + }, + "is_verified": true, + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "metadata": { + "unesco_id": 1229, + "country": "سوريا", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "opening_hours": "09:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 303, + "slug": "palmyra-temple-of-bel", + "name_ar": "معبد بل الأثري وشارع الأعمدة الكبير في تدمر", + "name_en": "Ancient Palmyra: Temple of Bel & Colonnaded Street", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Homs", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "التدمري والروماني (القرن الأول الميلادي / عهد الملكة زنوبيا)", + "narrative_ar": "عروس البادية السورية وواحة القوافل على طريق الحرير القديم، عاصمة مملكة تدمر العربية بقيادة الملكة زنوبيا. يضم الموقع معبد بل المهيب، والشارع المعمد الطويل بأقواسه الثلاثية المذهلة، والمسرح الروماني الأثري ومدافن الأبراج البديعة.", + "narrative": "عروس البادية السورية وواحة القوافل على طريق الحرير القديم عاصمة مملكة تدمر.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Palmyra_ancient_city%2C_Syria.jpg/1200px-Palmyra_ancient_city%2C_Syria.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Palmyra_ancient_city%2C_Syria.jpg/1200px-Palmyra_ancient_city%2C_Syria.jpg", + "centroid": { + "lat": 34.5514, + "lng": 38.2742 + }, + "gate": { + "lat": 34.5523, + "lng": 38.2754 + }, + "parking": { + "lat": 34.553, + "lng": 38.2763 + }, + "ticket": { + "lat": 34.5521, + "lng": 38.2752 + }, + "coordinates": { + "centroid": { + "lat": 34.5514, + "lng": 38.2742 + }, + "access_gate": { + "lat": 34.5523, + "lng": 38.2754 + }, + "parking": { + "lat": 34.553, + "lng": 38.2763 + }, + "ticket_office": { + "lat": 34.5521, + "lng": 38.2752 + } + }, + "is_verified": true, + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "metadata": { + "unesco_id": 23, + "country": "سوريا", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "opening_hours": "08:00 - 18:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 304, + "slug": "aleppo-citadel", + "name_ar": "قلعة حلب التاريخية الشهباء", + "name_en": "Citadel of Aleppo", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Aleppo", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "الأيوبي والسلجوقي والمملوكي (القرن 12 - 13 م)", + "narrative_ar": "تعد قلعة حلب إحدى أكبر وأقدم القلاع العسكرية الحصينة في العالم الإسلامي، ترتفع فوق تل بيضاوي كلسي في قلب المدينة القديمة محاطة بخندق عميق وجسر معلق وبوابة حصينة ذات أبواب حديدية ثلاثية شيدها الملك الظاهر غازي ابن صلاح الدين الأيوبي.", + "narrative": "إحدى أكبر وأقدم القلاع العسكرية الحصينة في العالم الإسلامي، شيدها الملك الظاهر غازي بن صلاح الدين.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/Citadel_of_Aleppo%2C_Syria.jpg/1200px-Citadel_of_Aleppo%2C_Syria.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/Citadel_of_Aleppo%2C_Syria.jpg/1200px-Citadel_of_Aleppo%2C_Syria.jpg", + "centroid": { + "lat": 36.1992, + "lng": 37.1628 + }, + "gate": { + "lat": 36.1982, + "lng": 37.1621 + }, + "parking": { + "lat": 36.1975, + "lng": 37.1615 + }, + "ticket": { + "lat": 36.1985, + "lng": 37.1624 + }, + "coordinates": { + "centroid": { + "lat": 36.1992, + "lng": 37.1628 + }, + "access_gate": { + "lat": 36.1982, + "lng": 37.1621 + }, + "parking": { + "lat": 36.1975, + "lng": 37.1615 + }, + "ticket_office": { + "lat": 36.1985, + "lng": 37.1624 + } + }, + "is_verified": true, + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "metadata": { + "unesco_id": 21, + "country": "سوريا", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "opening_hours": "09:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 305, + "slug": "bosra-roman-theatre", + "name_ar": "مدينة بصرى الشام الأثرية والمدرج الروماني", + "name_en": "Ancient City of Bosra and Roman Theatre", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Daraa", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "الروماني والبيزنطي والإسلامي المبكر (القرن الثاني الميلادي)", + "narrative_ar": "عاصمة الولاية العربية الرومانية القديمة ومحطة القوافل النبوية الشريفة إلى الشام. تضم أكمل وأعظم مدرج روماني محفوظ في العالم شيد من حجر البازلت الأسود الصلد والذي تحول في العصر الأيوبي إلى قلعة دفاعية بأبراج حصينة.", + "narrative": "عاصمة الولاية العربية الرومانية القديمة ومحطة القوافل النبوية الشريفة إلى الشام.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Bosra_Theatre.jpg/1200px-Bosra_Theatre.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Bosra_Theatre.jpg/1200px-Bosra_Theatre.jpg", + "centroid": { + "lat": 32.5186, + "lng": 36.4811 + }, + "gate": { + "lat": 32.5175, + "lng": 36.4819 + }, + "parking": { + "lat": 32.5168, + "lng": 36.4828 + }, + "ticket": { + "lat": 32.5178, + "lng": 36.4821 + }, + "coordinates": { + "centroid": { + "lat": 32.5186, + "lng": 36.4811 + }, + "access_gate": { + "lat": 32.5175, + "lng": 36.4819 + }, + "parking": { + "lat": 32.5168, + "lng": 36.4828 + }, + "ticket_office": { + "lat": 32.5178, + "lng": 36.4821 + } + }, + "is_verified": true, + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "metadata": { + "unesco_id": 22, + "country": "سوريا", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "opening_hours": "08:30 - 17:30 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 306, + "slug": "ugarit-ras-shamra", + "name_ar": "مدينة أوغاريت الملكية وتل رأس شمرا", + "name_en": "Royal City of Ugarit and Tell Ras Shamra", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Latakia", + "category": "archaeological_site", + "tier": "Heritage Landmark", + "era": "الكنعاني الفينيقي (الألف الثاني قبل الميلاد)", + "narrative_ar": "مهد أول أبجدية مسمارية صوتية عرفها التاريخ البشري (أبجدية أوغاريت المكونة من 30 حرفاً). كانت أوغاريت عاصمة كنعانية بحرية مزدهرة تجارياً وثقافياً تضم قصراً ملكياً رحباً ومكتبات طينية حوت ملاحم أدبية وقوانين سياسية كنعانية عريقة.", + "narrative": "مهد أول أبجدية مسمارية صوتية عرفها التاريخ البشري.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/Ugarit_Palace_Entrance.jpg/1200px-Ugarit_Palace_Entrance.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/Ugarit_Palace_Entrance.jpg/1200px-Ugarit_Palace_Entrance.jpg", + "centroid": { + "lat": 35.6019, + "lng": 35.7839 + }, + "gate": { + "lat": 35.6028, + "lng": 35.7851 + }, + "parking": { + "lat": 35.6035, + "lng": 35.786 + }, + "ticket": { + "lat": 35.6026, + "lng": 35.7849 + }, + "coordinates": { + "centroid": { + "lat": 35.6019, + "lng": 35.7839 + }, + "access_gate": { + "lat": 35.6028, + "lng": 35.7851 + }, + "parking": { + "lat": 35.6035, + "lng": 35.786 + }, + "ticket_office": { + "lat": 35.6026, + "lng": 35.7849 + } + }, + "is_verified": true, + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "metadata": { + "country": "سوريا", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "opening_hours": "09:00 - 16:30 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 307, + "slug": "maaloula-st-thecla", + "name_ar": "دير القديسة تقلا البطريركي في معلولا الأثرية", + "name_en": "Saint Thecla Patriarchal Monastery in Maaloula", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Rif Dimashq", + "category": "religious_heritage", + "tier": "Religious & Historic Shrine", + "era": "البيزنطي المبكر (القرن الرابع الميلادي)", + "narrative_ar": "يقع في بلدة معلولا الجبلية الشهيرة التي لا يزال سكانها يتحدثون باللغة الآرامية الغربية (لغة السيد المسيح عليه السلام). ينحت الدير في بطن الجبل الصخري الشاهق ويضم ضريح القديسة تقلا وممر الفج الصخري المعجز.", + "narrative": "يقع في بلدة معلولا الجبلية الشهيرة التي لا يزال سكانها يتحدثون باللغة الآرامية.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Maaloula_Saint_Thecla.jpg/1200px-Maaloula_Saint_Thecla.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Maaloula_Saint_Thecla.jpg/1200px-Maaloula_Saint_Thecla.jpg", + "centroid": { + "lat": 33.8467, + "lng": 36.5458 + }, + "gate": { + "lat": 33.8473, + "lng": 36.5466 + }, + "parking": { + "lat": 33.848, + "lng": 36.5475 + }, + "ticket": { + "lat": 33.8471, + "lng": 36.5464 + }, + "coordinates": { + "centroid": { + "lat": 33.8467, + "lng": 36.5458 + }, + "access_gate": { + "lat": 33.8473, + "lng": 36.5466 + }, + "parking": { + "lat": 33.848, + "lng": 36.5475 + }, + "ticket_office": { + "lat": 33.8471, + "lng": 36.5464 + } + }, + "is_verified": true, + "curator": "بطريركية أنطاكية وسائر المشرق للروم الأرثوذكس", + "metadata": { + "country": "سوريا", + "curator": "بطريركية أنطاكية وسائر المشرق للروم الأرثوذكس", + "opening_hours": "08:00 - 19:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 308, + "slug": "saydnaya-monastery", + "name_ar": "دير سيدة صيدنايا البطريركي التاريخي", + "name_en": "Our Lady of Saydnaya Patriarchal Monastery", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Rif Dimashq", + "category": "religious_heritage", + "tier": "Religious & Historic Shrine", + "era": "البيزنطي (547 م / الإمبراطور جستنيان الأول)", + "narrative_ar": "أحد أقدم وأعرق الأديرة المسيحية المأهولة في الشرق الأوسط، شيده الإمبراطور البيزنطي جستنيان عام 547 م فوق صخرة جبلية ترتفع لنحو 1500 متر عن سطح البحر، ويضم أيقونة الشاغورة العجائبية المنسوبة للقديس لوقا الإنجيلي.", + "narrative": "أحد أقدم وأعرق الأديرة المسيحية المأهولة في الشرق الأوسط.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Saidnaya_monastery.jpg/1200px-Saidnaya_monastery.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Saidnaya_monastery.jpg/1200px-Saidnaya_monastery.jpg", + "centroid": { + "lat": 33.6992, + "lng": 36.4295 + }, + "gate": { + "lat": 33.6998, + "lng": 36.4303 + }, + "parking": { + "lat": 33.7005, + "lng": 36.4312 + }, + "ticket": { + "lat": 33.6996, + "lng": 36.4301 + }, + "coordinates": { + "centroid": { + "lat": 33.6992, + "lng": 36.4295 + }, + "access_gate": { + "lat": 33.6998, + "lng": 36.4303 + }, + "parking": { + "lat": 33.7005, + "lng": 36.4312 + }, + "ticket_office": { + "lat": 33.6996, + "lng": 36.4301 + } + }, + "is_verified": true, + "curator": "بطريركية أنطاكية وسائر المشرق للروم الأرثوذكس", + "metadata": { + "country": "سوريا", + "curator": "بطريركية أنطاكية وسائر المشرق للروم الأرثوذكس", + "opening_hours": "08:00 - 19:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 309, + "slug": "hama-norias", + "name_ar": "نواعير حماة التاريخية وجامع النوري الكبير", + "name_en": "Historic Norias of Hama on the Orontes River", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Hama", + "category": "monument", + "tier": "Tier-1 Sovereign Anchor", + "era": "الأيوبي والمملوكي (القرن 12 - 14 الميلادي)", + "narrative_ar": "تعد نواعير حماة الخشبية العملاقة المنصوبة على نهر العاصي أضخم نواعير مائية في العالم (يصل قطر ناعورة المحمدية إلى أكثر من 21 متراً). كانت ترفع المياه لري بساتين المدينة ومساجدها وخزاناتها بنظام هندسي ميكانيكي هيدروليكي فريد.", + "narrative": "تعد نواعير حماة الخشبية العملاقة المنصوبة على نهر العاصي أضخم نواعير مائية في العالم.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Hama%2C_Syria_-_Norias.jpg/1200px-Hama%2C_Syria_-_Norias.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Hama%2C_Syria_-_Norias.jpg/1200px-Hama%2C_Syria_-_Norias.jpg", + "centroid": { + "lat": 35.1342, + "lng": 36.7511 + }, + "gate": { + "lat": 35.1348, + "lng": 36.7519 + }, + "parking": { + "lat": 35.1355, + "lng": 36.7528 + }, + "ticket": { + "lat": 35.1346, + "lng": 36.7517 + }, + "coordinates": { + "centroid": { + "lat": 35.1342, + "lng": 36.7511 + }, + "access_gate": { + "lat": 35.1348, + "lng": 36.7519 + }, + "parking": { + "lat": 35.1355, + "lng": 36.7528 + }, + "ticket_office": { + "lat": 35.1346, + "lng": 36.7517 + } + }, + "is_verified": true, + "curator": "مجلس مدينة حماة ومديرية الآثار", + "metadata": { + "country": "سوريا", + "curator": "مجلس مدينة حماة ومديرية الآثار", + "opening_hours": "موقع مفتوح على مدار الساعة" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 310, + "slug": "marqab-castle-baniyas", + "name_ar": "قلعة المرقب - الحصن البازلتي على البحر", + "name_en": "Margat (Marqab) Castle Mediterranean Citadel", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Tartus", + "category": "historic_palace", + "tier": "Heritage Landmark", + "era": "الإسلامي والمملوكي (شيدها بنو محرز وحررها قلاوون 1285 م)", + "narrative_ar": "قلعة ساحلية ضخمة مشيدة من الحجارة البازلتية السوداء تعلو هضبة بركانية تطل على البحر الأبيض المتوسط قرب بانياس، اشتهرت ببرجها الدائري الهائل وقوة تحصيناتها التي صمدت لعقود قبل أن يفتحها السلطان المنصور قلاوون.", + "narrative": "قلعة ساحلية ضخمة مشيدة من الحجارة البازلتية السوداء تعلو هضبة بركانية تطل على البحر.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Marqab_Castle.jpg/1200px-Marqab_Castle.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Marqab_Castle.jpg/1200px-Marqab_Castle.jpg", + "centroid": { + "lat": 35.1511, + "lng": 35.9497 + }, + "gate": { + "lat": 35.1519, + "lng": 35.9507 + }, + "parking": { + "lat": 35.1526, + "lng": 35.9516 + }, + "ticket": { + "lat": 35.1517, + "lng": 35.9505 + }, + "coordinates": { + "centroid": { + "lat": 35.1511, + "lng": 35.9497 + }, + "access_gate": { + "lat": 35.1519, + "lng": 35.9507 + }, + "parking": { + "lat": 35.1526, + "lng": 35.9516 + }, + "ticket_office": { + "lat": 35.1517, + "lng": 35.9505 + } + }, + "is_verified": true, + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "metadata": { + "country": "سوريا", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "opening_hours": "09:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 401, "slug": "giza-pyramids-sphinx", "name_ar": "أهرامات الجيزة وتمثال أبو الهول", "name_en": "Giza Pyramid Complex & Great Sphinx", - "category": "archaeological_site", - "era": "Old Kingdom (4th Dynasty)", - "narrative_ar": "إحدى عجائب الدنيا السبع القديمة الباقية، تضم هرم خوفو الأكبر وهرم خفرع وهرم منقرع وتمثال أبو الهول حارس الهضبة، شيدت قبل أكثر من 4500 عام.", - "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Kheops-Pyramid.jpg/1200px-Kheops-Pyramid.jpg", + "country": "مصر", + "country_en": "Egypt", "governorate": "Giza", - "country": "الأردن", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "الفرعوني - الدولة القديمة (الأسرة الرابعة / 2500 ق.م)", + "narrative_ar": "إحدى عجائب الدنيا السبع القديمة الباقية، تضم هرم خوفو الأكبر وخفرع ومنقرع وتمثال أبو الهول حارس الهضبة، شيدت قبل أكثر من 4500 عام وتعد رمزاً خالداً للحضارة الفرعونية وقمة الهندسة الفلكية والمعمارية في مصر القديمة.", + "narrative": "إحدى عجائب الدنيا السبع القديمة الباقية، تضم هرم خوفو الأكبر وخفرع ومنقرع وتمثال أبو الهول.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Kheops-Pyramid.jpg/1200px-Kheops-Pyramid.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Kheops-Pyramid.jpg/1200px-Kheops-Pyramid.jpg", + "centroid": { + "lat": 29.9792, + "lng": 31.1342 + }, + "gate": { + "lat": 29.976, + "lng": 31.1398 + }, + "parking": { + "lat": 29.9752, + "lng": 31.141 + }, + "ticket": { + "lat": 29.9762, + "lng": 31.1395 + }, "coordinates": { "centroid": { "lat": 29.9792, @@ -537,205 +5546,1381 @@ "lng": 31.1395 } }, + "is_verified": true, + "curator": "وزارة السياحة والآثار المصرية (MoTA)", "metadata": { - "curator": "Ministry of Tourism and Antiquities", - "gallery": [ - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Kheops-Pyramid.jpg/1200px-Kheops-Pyramid.jpg", - "author": "Nina Aldin Thune", - "license": "CC BY-SA 3.0", - "caption_ar": "الهرم الأكبر (خوفو) وصخور الهضبة", - "source_url": "https://commons.wikimedia.org/wiki/File:Kheops-Pyramid.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Great_Sphinx_of_Giza_-_20080502a.jpg/1200px-Great_Sphinx_of_Giza_-_20080502a.jpg", - "author": "Hajor", - "license": "CC BY-SA 3.0", - "caption_ar": "تمثال أبو الهول وخلفه هرم خفرع", - "source_url": "https://commons.wikimedia.org/wiki/File:Great_Sphinx_of_Giza_-_20080502a.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/All_Gizah_Pyramids.jpg/1200px-All_Gizah_Pyramids.jpg", - "author": "Ricardo Liberato", - "license": "CC BY-SA 2.0", - "caption_ar": "بانوراما مجمع أهرامات الجيزة الثلاثة", - "source_url": "https://commons.wikimedia.org/wiki/File:All_Gizah_Pyramids.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Giza_plateau_-_Pyramid_of_Khafre.jpg/1200px-Giza_plateau_-_Pyramid_of_Khafre.jpg", - "author": "KennyOMG", - "license": "CC BY-SA 4.0", - "caption_ar": "هرم خفرع والكسوة الحجرية في القمة", - "source_url": "https://commons.wikimedia.org/wiki/File:Giza_plateau_-_Pyramid_of_Khafre.jpg" - } - ], "unesco_id": 86, - "opening_hours": "07:00 - 17:00" - } + "country": "مصر", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "opening_hours": "07:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null }, { - "id": 15, - "slug": "karnak-temple-luxor", - "name_ar": "مجمع معابد الكرنك وطريق الكباش", - "name_en": "Karnak Temple Complex & Avenue of Sphinxes", - "category": "archaeological_site", - "era": "New Kingdom / Middle Kingdom", - "narrative_ar": "أعظم دور العبادة في مصر القديمة وأكبر مجمع ديني شيد عبر العصور، يتميز ببهو الأعمدة العظيم (134 عموداً عملاقاً) ومسلات حتشبسوت وطريق الكباش.", - "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Karnak_temple_complex.jpg/1200px-Karnak_temple_complex.jpg", + "id": 402, + "slug": "karnak-temple-complex", + "name_ar": "مجمع معابد الكرنك وبهو الأعمدة الكبرى", + "name_en": "Karnak Temple Complex & Great Hypostyle Hall", + "country": "مصر", + "country_en": "Egypt", "governorate": "Luxor", - "country": "الأردن", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "الدولة الوسطى والحديثة (2000 - 30 ق.م / طيبة القديمة)", + "narrative_ar": "أكبر مجمع ديني ومعبدي شيد في تاريخ العالم القديم، مكرس لثالوث طيبة (آمون وموت وخونسو). يشتهر ببهو الأعمدة العظيم الذي يضم 134 عموداً حجرياً عملاقاً، وبحيرته المقدسة، ومسلات حتشبسوت وتحتمس الثالث الشاهقة.", + "narrative": "أكبر مجمع ديني ومعبدي شيد في تاريخ العالم القديم في طيبة القديمة (الأقصر).", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Karnak_temple_hypostyle_hall.jpg/1200px-Karnak_temple_hypostyle_hall.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Karnak_temple_hypostyle_hall.jpg/1200px-Karnak_temple_hypostyle_hall.jpg", + "centroid": { + "lat": 25.7188, + "lng": 32.6583 + }, + "gate": { + "lat": 25.7181, + "lng": 32.6562 + }, + "parking": { + "lat": 25.7175, + "lng": 32.6548 + }, + "ticket": { + "lat": 25.718, + "lng": 32.656 + }, "coordinates": { "centroid": { "lat": 25.7188, - "lng": 32.6586 + "lng": 32.6583 }, "access_gate": { - "lat": 25.7171, - "lng": 32.6558 + "lat": 25.7181, + "lng": 32.6562 }, "parking": { - "lat": 25.7165, + "lat": 25.7175, "lng": 32.6548 }, "ticket_office": { - "lat": 25.7173, - "lng": 32.6555 + "lat": 25.718, + "lng": 32.656 } }, + "is_verified": true, + "curator": "وزارة السياحة والآثار المصرية (MoTA)", "metadata": { - "curator": "Ministry of Tourism and Antiquities", - "gallery": [ - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Karnak_temple_complex.jpg/1200px-Karnak_temple_complex.jpg", - "author": "Ian Lloyd", - "license": "CC BY-SA 3.0", - "caption_ar": "صرح معبد آمون رع بالكرنك والبحيرة المقدسة", - "source_url": "https://commons.wikimedia.org/wiki/File:Karnak_temple_complex.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Hypostyle_Hall_at_Karnak.jpg/1200px-Hypostyle_Hall_at_Karnak.jpg", - "author": "Rolf Cosar", - "license": "CC BY-SA 3.0", - "caption_ar": "بهو الأعمدة الكبرى بالكرنك (134 عموداً)", - "source_url": "https://commons.wikimedia.org/wiki/File:Hypostyle_Hall_at_Karnak.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Avenue_of_Sphinxes_Karnak.jpg/1200px-Avenue_of_Sphinxes_Karnak.jpg", - "author": "Marc Ryckaert", - "license": "CC BY-SA 4.0", - "caption_ar": "طريق الكباش الذي يربط معبدي الكرنك والأقصر", - "source_url": "https://commons.wikimedia.org/wiki/File:Avenue_of_Sphinxes_Karnak.jpg" - } - ], "unesco_id": 87, - "opening_hours": "06:00 - 17:30" - } + "country": "مصر", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "opening_hours": "06:00 - 17:30 يومياً" + }, + "site_polygon": null, + "admission": null }, { - "id": 16, - "slug": "palmyra-ancient-city", - "name_ar": "مدينة تدمر الأثرية (عروس البادية)", - "name_en": "Ancient City of Palmyra (Tadmur)", + "id": 403, + "slug": "luxor-temple-avenue-sphinxes", + "name_ar": "معبد الأقصر وطريق الكباش التاريخي", + "name_en": "Luxor Temple and Avenue of Sphinxes", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Luxor", "category": "archaeological_site", - "era": "Greco-Roman / Palmyrene", - "narrative_ar": "واحة حضارية كبرى في قلب بادية الشام، ازدهرت كمحطة قوافل رئيسية على طريق الحرير وقادتها الملكة زنوبيا، وتضم شارع الأعمدة وقوس النصر والمسرح الروماني.", - "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Palmyre_Colonnade.jpg/1200px-Palmyre_Colonnade.jpg", - "governorate": "Homs", - "country": "الأردن", + "tier": "Tier-1 Sovereign Anchor", + "era": "الدولة الحديثة (عهد أمنحتب الثالث ورمسيس الثاني)", + "narrative_ar": "شيده الملك أمنحتب الثالث ورمسيس الثاني في قلب الأقصر على الضفة الشرقية للنيل، ويرتبط بمعبد الكرنك عبر طريق الكباش الأسطوري بطول 2.7 كم. تميز بصروحه العملاقة، تماثيل رمسيس الثاني الجالسة، ومسلته التي نقلت شقيقتها إلى ميدان الكونكورد بباريس.", + "narrative": "شيده الملك أمنحتب الثالث ورمسيس الثاني ويرتبط بمعبد الكرنك عبر طريق الكباش.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Luxor_Temple_Ramses_II.jpg/1200px-Luxor_Temple_Ramses_II.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Luxor_Temple_Ramses_II.jpg/1200px-Luxor_Temple_Ramses_II.jpg", + "centroid": { + "lat": 25.6995, + "lng": 32.6394 + }, + "gate": { + "lat": 25.7001, + "lng": 32.6402 + }, + "parking": { + "lat": 25.7008, + "lng": 32.6412 + }, + "ticket": { + "lat": 25.6998, + "lng": 32.6398 + }, "coordinates": { "centroid": { - "lat": 34.5505, - "lng": 38.2678 + "lat": 25.6995, + "lng": 32.6394 }, "access_gate": { - "lat": 34.552, - "lng": 38.2725 + "lat": 25.7001, + "lng": 32.6402 }, "parking": { - "lat": 34.5532, - "lng": 38.274 + "lat": 25.7008, + "lng": 32.6412 }, "ticket_office": { - "lat": 34.5522, - "lng": 38.2722 + "lat": 25.6998, + "lng": 32.6398 } }, + "is_verified": true, + "curator": "وزارة السياحة والآثار المصرية (MoTA)", "metadata": { - "curator": "Directorate-General of Antiquities and Museums", - "gallery": [ - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/Palmyre_Colonnade.jpg/1200px-Palmyre_Colonnade.jpg", - "author": "Bernard Gagnon", - "license": "CC BY-SA 3.0", - "caption_ar": "شارع الأعمدة الرئيسي وقوس النصر في تدمر", - "source_url": "https://commons.wikimedia.org/wiki/File:Palmyre_Colonnade.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Palmyra_Theatre_2010.jpg/1200px-Palmyra_Theatre_2010.jpg", - "author": "Jerzy Strzelecki", - "license": "CC BY-SA 3.0", - "caption_ar": "المسرح الروماني الأثري في تدمر", - "source_url": "https://commons.wikimedia.org/wiki/File:Palmyra_Theatre_2010.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Valley_of_the_Tombs%2C_Palmyra.jpg/1200px-Valley_of_the_Tombs%2C_Palmyra.jpg", - "author": "Daniel Csörföly", - "license": "CC BY-SA 3.0", - "caption_ar": "وادي القبور والأبراج الجنائزية في تدمر", - "source_url": "https://commons.wikimedia.org/wiki/File:Valley_of_the_Tombs%2C_Palmyra.jpg" - } - ], - "unesco_id": 23 - } + "unesco_id": 87, + "country": "مصر", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "opening_hours": "06:00 - 21:00 يومياً" + }, + "site_polygon": null, + "admission": null }, { - "id": 17, - "slug": "krak-des-chevaliers", - "name_ar": "قلعة الحصن التاريخية", - "name_en": "Krak des Chevaliers (Qal'at al-Hosn)", - "category": "historic_palace", - "era": "Crusader / Mamluk", - "narrative_ar": "أعظم وأكمل قلاع العصور الوسطى المحفوظة في العالم، شيدت على قمة تل بارتفاع 650 متراً فوق ممر حمص لحماية طرق القوافل، ومسجلة على لائحة التراث العالمي.", - "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Krak_des_Chevaliers_2009.jpg/1200px-Krak_des_Chevaliers_2009.jpg", - "governorate": "Homs", - "country": "الأردن", + "id": 404, + "slug": "valley-of-the-kings", + "name_ar": "وادي الملوك ومقابر الفراعنة في البر الغربي", + "name_en": "Valley of the Kings & Royal Tombs", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Luxor", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "الدولة الحديثة (الأسرات 18 - 20 / 1539 - 1075 ق.م)", + "narrative_ar": "المثوى السري والملكي الأسطوري لفراعنة مصر العظام لنحو 500 عام في البر الغربي لطيبة. يضم أكثر من 60 مقبرة ملكية منحوتة في باطن الجبل ومزينة بنقوش ملونة زاهية لكتاب الموتى، ومن أشهرها مقبرة الملك الشاب توت عنخ آمون وسيتي الأول ورمسيس السادس.", + "narrative": "المثوى السري والملكي الأسطوري لفراعنة مصر العظام لنحو 500 عام.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Valley_of_the_Kings_view.jpg/1200px-Valley_of_the_Kings_view.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Valley_of_the_Kings_view.jpg/1200px-Valley_of_the_Kings_view.jpg", + "centroid": { + "lat": 25.7402, + "lng": 32.6014 + }, + "gate": { + "lat": 25.741, + "lng": 32.6025 + }, + "parking": { + "lat": 25.742, + "lng": 32.6038 + }, + "ticket": { + "lat": 25.7412, + "lng": 32.6028 + }, "coordinates": { "centroid": { - "lat": 34.7569, - "lng": 36.2944 + "lat": 25.7402, + "lng": 32.6014 }, "access_gate": { - "lat": 34.7578, - "lng": 36.2952 + "lat": 25.741, + "lng": 32.6025 }, "parking": { - "lat": 34.7585, - "lng": 36.2965 + "lat": 25.742, + "lng": 32.6038 }, "ticket_office": { - "lat": 34.7579, - "lng": 36.295 + "lat": 25.7412, + "lng": 32.6028 } }, + "is_verified": true, + "curator": "وزارة السياحة والآثار المصرية (MoTA)", "metadata": { - "curator": "Directorate-General of Antiquities and Museums", - "gallery": [ - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Krak_des_Chevaliers_2009.jpg/1200px-Krak_des_Chevaliers_2009.jpg", - "author": "Jerzy Strzelecki", - "license": "CC BY-SA 3.0", - "caption_ar": "الواجهة الغربية لقلعة الحصن والأسوار الحصينة", - "source_url": "https://commons.wikimedia.org/wiki/File:Krak_des_Chevaliers_2009.jpg" - }, - { - "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Krak_des_Chevaliers_courtyard.jpg/1200px-Krak_des_Chevaliers_courtyard.jpg", - "author": "Bernard Gagnon", - "license": "CC BY-SA 3.0", - "caption_ar": "الفناء الداخلي وقاعة الفرسان بالقلعة", - "source_url": "https://commons.wikimedia.org/wiki/File:Krak_des_Chevaliers_courtyard.jpg" - } - ], - "unesco_id": 1229 - } + "unesco_id": 87, + "country": "مصر", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "opening_hours": "06:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 405, + "slug": "abu-simbel-temples", + "name_ar": "معابد أبو سمبل العظيمة لرمسيس الثاني", + "name_en": "Abu Simbel Rock Temples of Ramesses II", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Aswan", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "الدولة الحديثة (1264 ق.م / رمسيس الثاني والملكة نفرتاري)", + "narrative_ar": "معبدان صخريان استثنائيان منحوتان في قلب الجبل على ضفاف بحيرة ناصر جنوب أسوان. يتصدر المعبد الكبير أربعة تماثيل عملاقة للملك رمسيس الثاني بارتفاع 20 متراً، وتتعامد الشمس على وجه الملك داخل قدس الأقداس مرتين سنوياً في معجزة فلكية وهندسية خالدة.", + "narrative": "معبدان صخريان استثنائيان منحوتان في قلب الجبل على ضفاف بحيرة ناصر جنوب أسوان.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Abu_Simbel%2C_Ramesses_Temple%2C_front%2C_Egypt%2C_Oct_2004.jpg/1200px-Abu_Simbel%2C_Ramesses_Temple%2C_front%2C_Egypt%2C_Oct_2004.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Abu_Simbel%2C_Ramesses_Temple%2C_front%2C_Egypt%2C_Oct_2004.jpg/1200px-Abu_Simbel%2C_Ramesses_Temple%2C_front%2C_Egypt%2C_Oct_2004.jpg", + "centroid": { + "lat": 22.3372, + "lng": 31.6258 + }, + "gate": { + "lat": 22.3365, + "lng": 31.6248 + }, + "parking": { + "lat": 22.3355, + "lng": 31.6238 + }, + "ticket": { + "lat": 22.3362, + "lng": 31.6245 + }, + "coordinates": { + "centroid": { + "lat": 22.3372, + "lng": 31.6258 + }, + "access_gate": { + "lat": 22.3365, + "lng": 31.6248 + }, + "parking": { + "lat": 22.3355, + "lng": 31.6238 + }, + "ticket_office": { + "lat": 22.3362, + "lng": 31.6245 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "metadata": { + "unesco_id": 88, + "country": "مصر", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "opening_hours": "06:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 406, + "slug": "abydos-temple-seti-i", + "name_ar": "معبد سيتي الأول في أبيدوس (العرابة المدفونة)", + "name_en": "Temple of Seti I at Abydos", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Sohag", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "الفرعوني - الأسرة التاسعة عشرة (القرن 13 ق.م)", + "narrative_ar": "شيده الملك سيتي الأول واستكمله ابنه رمسيس الثاني في العرابة المدفونة بسوهاج، ويعد تحفة معمارية وفنية فريدة في تاريخ مصر القديمة بنقوشه البارزة بالغة الدقة. يحتوي المعبد على قائمة ملوك أبيدوس التاريخية الشهيرة، بالإضافة إلى الأوسيريون الأسطوري الواقع خلف المعبد.", + "narrative": "شيده الملك سيتي الأول واستكمله ابنه رمسيس الثاني في سوهاج، ويضم قائمة ملوك أبيدوس الشهيرة.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Temple_of_Seti_I%2C_Interior%2C_Abydos%2C_Egypt.jpg/1200px-Temple_of_Seti_I%2C_Interior%2C_Abydos%2C_Egypt.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Temple_of_Seti_I%2C_Interior%2C_Abydos%2C_Egypt.jpg/1200px-Temple_of_Seti_I%2C_Interior%2C_Abydos%2C_Egypt.jpg", + "centroid": { + "lat": 26.18485, + "lng": 32.2725 + }, + "gate": { + "lat": 26.1855, + "lng": 32.27336 + }, + "parking": { + "lat": 26.1861, + "lng": 32.27406 + }, + "ticket": { + "lat": 26.18535, + "lng": 32.27321 + }, + "coordinates": { + "centroid": { + "lat": 26.18485, + "lng": 32.2725 + }, + "access_gate": { + "lat": 26.1855, + "lng": 32.27336 + }, + "parking": { + "lat": 26.1861, + "lng": 32.27406 + }, + "ticket_office": { + "lat": 26.18535, + "lng": 32.27321 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "metadata": { + "country": "مصر", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "opening_hours": "07:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 407, + "slug": "dendera-temple-complex", + "name_ar": "مجمع معبد حتحور في دندرة", + "name_en": "Dendera Temple Complex of Hathor", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Qena", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "البطلمي والروماني (القرن الأول قبل الميلاد)", + "narrative_ar": "أحد أكثر المعابد المصرية القديمة اكتمالاً وبهاءً، مكرس لربة الجمال والموسيقى حتحور في قنا. يشتهر بسقوفه الفلكية الملونة البديعة المحفوظة بألوانها الأصلية، ونقوش زودياك دندرة الفلكي الشهير، وسردابه السري.", + "narrative": "أحد أكثر المعابد المصرية القديمة اكتمالاً وبهاءً، مكرس لربة الجمال والموسيقى حتحور في قنا.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Dendera_temple_facade.jpg/1200px-Dendera_temple_facade.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Dendera_temple_facade.jpg/1200px-Dendera_temple_facade.jpg", + "centroid": { + "lat": 26.14208, + "lng": 32.67005 + }, + "gate": { + "lat": 26.1432, + "lng": 32.6712 + }, + "parking": { + "lat": 26.1438, + "lng": 32.672 + }, + "ticket": { + "lat": 26.143, + "lng": 32.671 + }, + "coordinates": { + "centroid": { + "lat": 26.14208, + "lng": 32.67005 + }, + "access_gate": { + "lat": 26.1432, + "lng": 32.6712 + }, + "parking": { + "lat": 26.1438, + "lng": 32.672 + }, + "ticket_office": { + "lat": 26.143, + "lng": 32.671 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "metadata": { + "country": "مصر", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "opening_hours": "07:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 408, + "slug": "edfu-temple-horus", + "name_ar": "معبد حورس في إدفو", + "name_en": "Temple of Horus at Edfu", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Aswan", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "البطلمي (237 - 57 ق.م / بطليموس الثالث)", + "narrative_ar": "ثاني أكبر معبد في مصر بعد الكرنك وأكمل معبد بطلمي محفوظ بالكامل حتى اليوم، مكرس للإله الصقر حورس المنتقم لأبيه أوزوريس، ويتميز ببرجه وصرحه الهائلين ونقوش معركة حورس الأسطورية مع ست.", + "narrative": "ثاني أكبر معبد في مصر بعد الكرنك وأكمل معبد بطلمي محفوظ بالكامل حتى اليوم.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Edfu_temple_pylon.jpg/1200px-Edfu_temple_pylon.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Edfu_temple_pylon.jpg/1200px-Edfu_temple_pylon.jpg", + "centroid": { + "lat": 24.978, + "lng": 32.8738 + }, + "gate": { + "lat": 24.9788, + "lng": 32.8751 + }, + "parking": { + "lat": 24.9794, + "lng": 32.876 + }, + "ticket": { + "lat": 24.9786, + "lng": 32.8749 + }, + "coordinates": { + "centroid": { + "lat": 24.978, + "lng": 32.8738 + }, + "access_gate": { + "lat": 24.9788, + "lng": 32.8751 + }, + "parking": { + "lat": 24.9794, + "lng": 32.876 + }, + "ticket_office": { + "lat": 24.9786, + "lng": 32.8749 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "metadata": { + "country": "مصر", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "opening_hours": "07:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 409, + "slug": "sultan-hassan-mosque", + "name_ar": "مسجد ومدرسة السلطان حسن بالقاهرة التاريخية", + "name_en": "Mosque-Madrasa of Sultan Hassan", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Cairo", + "category": "monument", + "tier": "Tier-1 Sovereign Anchor", + "era": "المملوكي البحري (1356 - 1363 م / السلطان حسن بن قلاوون)", + "narrative_ar": "درة العمارة المملوكية الإسلامية وهرم العمارة الإسلامية في العالم، يقع في ميدان القلعة بالقاهرة التاريخية، ويتميز بارتفاع جدرانه ومآذنه الشاهقة (84 متراً) وإيواناته الأربعة الضخمة التي كانت تدرّس المذاهب الفقهية الأربعة.", + "narrative": "درة العمارة المملوكية الإسلامية وهرم العمارة الإسلامية في العالم.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Mosque_of_Sultan_Hasan_Cairo.jpg/1200px-Mosque_of_Sultan_Hasan_Cairo.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Mosque_of_Sultan_Hasan_Cairo.jpg/1200px-Mosque_of_Sultan_Hasan_Cairo.jpg", + "centroid": { + "lat": 30.0322, + "lng": 31.2564 + }, + "gate": { + "lat": 30.0326, + "lng": 31.257 + }, + "parking": { + "lat": 30.0331, + "lng": 31.2579 + }, + "ticket": { + "lat": 30.0324, + "lng": 31.2568 + }, + "coordinates": { + "centroid": { + "lat": 30.0322, + "lng": 31.2564 + }, + "access_gate": { + "lat": 30.0326, + "lng": 31.257 + }, + "parking": { + "lat": 30.0331, + "lng": 31.2579 + }, + "ticket_office": { + "lat": 30.0324, + "lng": 31.2568 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "metadata": { + "unesco_id": 89, + "country": "مصر", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "opening_hours": "09:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 410, + "slug": "qalaun-complex-moez", + "name_ar": "مجمع وقبة وضريح السلطان المنصور قلاوون", + "name_en": "Qalawun Complex in Al-Muizz Street", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Cairo", + "category": "monument", + "tier": "Tier-1 Sovereign Anchor", + "era": "المملوكي (1284 - 1285 م / السلطان قلاوون الألفي)", + "narrative_ar": "تحفة شارع المعز لدين الله الفاطمي في قلب القاهرة التاريخية، يضم مدرسة وقبة ضريحية باذخة وبيمارستاناً (مستشفى) تاريخياً علاجياً رائداً، وتعد القبة الضريحية ثاني أجمل ضريح في العالم بعد تاج محل لروعة ترخيمها وزجاجها المعشق.", + "narrative": "تحفة شارع المعز لدين الله الفاطمي في قلب القاهرة التاريخية.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Qalawun_Complex_Interior.jpg/1200px-Qalawun_Complex_Interior.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Qalawun_Complex_Interior.jpg/1200px-Qalawun_Complex_Interior.jpg", + "centroid": { + "lat": 30.0501, + "lng": 31.2612 + }, + "gate": { + "lat": 30.0503, + "lng": 31.2615 + }, + "parking": { + "lat": 30.0511, + "lng": 31.2625 + }, + "ticket": { + "lat": 30.0502, + "lng": 31.2614 + }, + "coordinates": { + "centroid": { + "lat": 30.0501, + "lng": 31.2612 + }, + "access_gate": { + "lat": 30.0503, + "lng": 31.2615 + }, + "parking": { + "lat": 30.0511, + "lng": 31.2625 + }, + "ticket_office": { + "lat": 30.0502, + "lng": 31.2614 + } + }, + "is_verified": true, + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "metadata": { + "unesco_id": 89, + "country": "مصر", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "opening_hours": "09:00 - 17:00 يومياً" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 411, + "slug": "saint-catherine-sinai", + "name_ar": "دير سانت كاترين الأثري وجبل موسى", + "name_en": "Saint Catherine Monastery & Mount Sinai", + "country": "مصر", + "country_en": "Egypt", + "governorate": "South Sinai", + "category": "religious_heritage", + "tier": "Tier-1 Sovereign Anchor", + "era": "البيزنطي (القرن السادس الميلادي / 527 م)", + "narrative_ar": "أقدم دير مأهول باستمرار في العالم والمسجل على قائمة اليونسكو، يقع عند سفح جبل موسى بسيناء حيث تلقى النبي موسى الوصايا العشر، ويضم شجرة العليقة الملتهبة المقدسة، ومكتبة تعد الثانية عالمياً في المخطوطات القديمة بعد الفاتيكان.", + "narrative": "أقدم دير مأهول باستمرار في العالم والمسجل على قائمة اليونسكو عند سفح جبل موسى.", + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Saint_Catherine_Monastery_Sinai.jpg/1200px-Saint_Catherine_Monastery_Sinai.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Saint_Catherine_Monastery_Sinai.jpg/1200px-Saint_Catherine_Monastery_Sinai.jpg", + "centroid": { + "lat": 28.5559, + "lng": 33.9761 + }, + "gate": { + "lat": 28.5568, + "lng": 33.9772 + }, + "parking": { + "lat": 28.558, + "lng": 33.9785 + }, + "ticket": { + "lat": 28.557, + "lng": 33.9775 + }, + "coordinates": { + "centroid": { + "lat": 28.5559, + "lng": 33.9761 + }, + "access_gate": { + "lat": 28.5568, + "lng": 33.9772 + }, + "parking": { + "lat": 28.558, + "lng": 33.9785 + }, + "ticket_office": { + "lat": 28.557, + "lng": 33.9775 + } + }, + "is_verified": true, + "curator": "رهبان دير سانت كاترين ووزارة الآثار المصرية", + "metadata": { + "unesco_id": 954, + "country": "مصر", + "curator": "رهبان دير سانت كاترين ووزارة الآثار المصرية", + "opening_hours": "09:00 - 12:00 (ما عدا الجمعة والأحد)" + }, + "site_polygon": null, + "admission": null + }, + { + "id": 215, + "slug": "maruf-al-karkhi-shrine", + "name_ar": "مرقد ومقام معروف الكرخي التاريخي", + "name_en": "Maruf al-Karkhi Shrine and Historic Cemetery", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Baghdad", + "category": "religious_heritage", + "tier": "Religious & Historic Shrine", + "era": "العباسي (القرن التاسع الميلادي)", + "narrative_ar": "أحد أشهر المزارات التاريخية في جانب الكرخ ببغداد، يضم مرقد الزاهد البغدادي الشهير معروف الكرخي، وشهد عبر القرون إضافات معمارية عباسية وعثمانية من قباب ومآذن أثرية شامخة.", + "narrative": "أحد أشهر المزارات التاريخية في جانب الكرخ ببغداد.", + "centroid": { + "lat": 33.336, + "lng": 44.3518 + }, + "gate": { + "lat": 33.3365, + "lng": 44.3525 + }, + "parking": { + "lat": 33.3371, + "lng": 44.3533 + }, + "ticket": { + "lat": 33.3363, + "lng": 44.3523 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Maruf_Karkhi_Mosque.jpg/1200px-Maruf_Karkhi_Mosque.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Maruf_Karkhi_Mosque.jpg/1200px-Maruf_Karkhi_Mosque.jpg", + "curator": "ديوان الوقف السني والهيئة العامة للآثار", + "metadata": { + "country": "العراق", + "curator": "ديوان الوقف السني والهيئة العامة للآثار", + "opening_hours": "05:00 - 21:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 33.336, + "lng": 44.3518 + }, + "access_gate": { + "lat": 33.3365, + "lng": 44.3525 + }, + "parking": { + "lat": 33.3371, + "lng": 44.3533 + }, + "ticket_office": { + "lat": 33.3363, + "lng": 44.3523 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 216, + "slug": "salman-al-farsi-shrine", + "name_ar": "مرقد ومزار الصحابي سلمان الفارسي في المدائن", + "name_en": "Salman al-Farsi Historic Shrine in Al-Madain", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Baghdad", + "category": "religious_heritage", + "tier": "Religious & Historic Shrine", + "era": "الإسلامي المبكر والعثماني", + "narrative_ar": "يقع في قضاء المدائن جنوب شرق بغداد قرب طاق كسرى التاريخي، يضم مرقد الصحابي الجليل سلمان الفارسي ومرقد حذيفة بن اليمان وعبد الله بن جابر الأنصاري رضوان الله عليهم في مجمع مقبب زاخر بالقاشاني الأزرق.", + "narrative": "يقع في قضاء المدائن جنوب شرق بغداد قرب طاق كسرى التاريخي.", + "centroid": { + "lat": 33.0989, + "lng": 44.5867 + }, + "gate": { + "lat": 33.0994, + "lng": 44.5874 + }, + "parking": { + "lat": 33.1001, + "lng": 44.5882 + }, + "ticket": { + "lat": 33.0992, + "lng": 44.5872 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Salman_al-Farsi_Mosque.jpg/1200px-Salman_al-Farsi_Mosque.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/Salman_al-Farsi_Mosque.jpg/1200px-Salman_al-Farsi_Mosque.jpg", + "curator": "ديوان الوقف الشيعي والهيئة العامة للآثار", + "metadata": { + "country": "العراق", + "curator": "ديوان الوقف الشيعي والهيئة العامة للآثار", + "opening_hours": "05:00 - 22:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 33.0989, + "lng": 44.5867 + }, + "access_gate": { + "lat": 33.0994, + "lng": 44.5874 + }, + "parking": { + "lat": 33.1001, + "lng": 44.5882 + }, + "ticket_office": { + "lat": 33.0992, + "lng": 44.5872 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 217, + "slug": "suq-al-ghazal-khulafa-minaret", + "name_ar": "مئذنة جامع الخلفاء وسوق الغزل العباسية", + "name_en": "Al-Khulafa Historic Abbasid Minaret", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Baghdad", + "category": "monument", + "tier": "Heritage Landmark", + "era": "العباسي (1289 م / عصر الخليفة المكتفي بالله)", + "narrative_ar": "المئذنة العباسية التاريخية الباقية من جامع القصر العباسي الذي شيده الخليفة المكتفي بالله في سوق الغزل برصافة بغداد، تعد شاهداً معمارياً باسقاً بارتفاع 34 متراً بزخارف الآجر والمقرنصات الهندسية البديعة.", + "narrative": "المئذنة العباسية التاريخية الباقية من جامع القصر العباسي في سوق الغزل ببغداد.", + "centroid": { + "lat": 33.3389, + "lng": 44.3977 + }, + "gate": { + "lat": 33.3393, + "lng": 44.3982 + }, + "parking": { + "lat": 33.3399, + "lng": 44.399 + }, + "ticket": { + "lat": 33.3391, + "lng": 44.398 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Khulafa_Mosque_Baghdad.jpg/1200px-Khulafa_Mosque_Baghdad.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Khulafa_Mosque_Baghdad.jpg/1200px-Khulafa_Mosque_Baghdad.jpg", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "metadata": { + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "08:00 - 17:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 33.3389, + "lng": 44.3977 + }, + "access_gate": { + "lat": 33.3393, + "lng": 44.3982 + }, + "parking": { + "lat": 33.3399, + "lng": 44.399 + }, + "ticket_office": { + "lat": 33.3391, + "lng": 44.398 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 218, + "slug": "khan-al-mirjan", + "name_ar": "خان المرجان والمدرسة المرجانية التاريخية", + "name_en": "Khan Murjan and Murjaniyya Complex", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Baghdad", + "category": "historic_palace", + "tier": "Heritage Landmark", + "era": "الجلائري والمملوكي (1359 م / أمين الدين مرجان)", + "narrative_ar": "أعظم خان تجاري مسقوف باقٍ في الشرق الأوسط، يقع في شارع الرشيد ببغداد، ويتميز ببهوه الأوسط المرتفع بنحو 14 متراً والمسقوف بعقود من الآجر المعشق ونوافذ القاشاني، شاهداً على الحركة التجارية الفخمة على طريق الحرير.", + "narrative": "أعظم خان تجاري مسقوف باقٍ في الشرق الأوسط في شارع الرشيد ببغداد.", + "centroid": { + "lat": 33.3364, + "lng": 44.3992 + }, + "gate": { + "lat": 33.3368, + "lng": 44.3997 + }, + "parking": { + "lat": 33.3374, + "lng": 44.4005 + }, + "ticket": { + "lat": 33.3366, + "lng": 44.3995 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Khan_Murjan_Baghdad.jpg/1200px-Khan_Murjan_Baghdad.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Khan_Murjan_Baghdad.jpg/1200px-Khan_Murjan_Baghdad.jpg", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "metadata": { + "country": "العراق", + "curator": "الهيئة العامة للآثار والتراث العراقية (SBAH)", + "opening_hours": "09:00 - 16:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 33.3364, + "lng": 44.3992 + }, + "access_gate": { + "lat": 33.3368, + "lng": 44.3997 + }, + "parking": { + "lat": 33.3374, + "lng": 44.4005 + }, + "ticket_office": { + "lat": 33.3366, + "lng": 44.3995 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 219, + "slug": "nukhailah-mosque-ezekiel", + "name_ar": "مسجد النخيلة الأثري ومقام النبي ذي الكفل", + "name_en": "Al-Nukhailah Mosque & Shrine of Ezekiel", + "country": "العراق", + "country_en": "Iraq", + "governorate": "Babil", + "category": "religious_heritage", + "tier": "Religious & Historic Shrine", + "era": "الإسلامي والمغولي الإيلخاني (1316 م / السلطان أولجايتو)", + "narrative_ar": "يقع في بلدة الكفل على طريق الحلة - النجف، ويضم مقام النبي حزقيل (ذو الكفل)، وتتوسطه مئذنة النخيلة التاريخية الفريدة المقرنصة التي شيدها السلطان المغولي المسلم محمد أولجايتو خربندا.", + "narrative": "يقع في بلدة الكفل على طريق الحلة - النجف ويضم مئذنة النخيلة التاريخية ومقام النبي حزقيل.", + "centroid": { + "lat": 32.2228, + "lng": 44.3739 + }, + "gate": { + "lat": 32.2233, + "lng": 44.3746 + }, + "parking": { + "lat": 32.2239, + "lng": 44.3754 + }, + "ticket": { + "lat": 32.2231, + "lng": 44.3744 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Ezekiel%27s_Tomb_in_Al_Kifl.jpg/1200px-Ezekiel%27s_Tomb_in_Al_Kifl.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Ezekiel%27s_Tomb_in_Al_Kifl.jpg/1200px-Ezekiel%27s_Tomb_in_Al_Kifl.jpg", + "curator": "ديوان الوقف والهيئة العامة للآثار", + "metadata": { + "country": "العراق", + "curator": "ديوان الوقف والهيئة العامة للآثار", + "opening_hours": "06:00 - 20:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 32.2228, + "lng": 44.3739 + }, + "access_gate": { + "lat": 32.2233, + "lng": 44.3746 + }, + "parking": { + "lat": 32.2239, + "lng": 44.3754 + }, + "ticket_office": { + "lat": 32.2231, + "lng": 44.3744 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 311, + "slug": "st-simeon-stylites-aleppo", + "name_ar": "كنيسة وقلعة القديس سمعان العمودي الأثرية", + "name_en": "Church of Saint Simeon Stylites", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Aleppo", + "category": "archaeological_site", + "tier": "Tier-1 Sovereign Anchor", + "era": "البيزنطي (475 م / الإمبراطور زينون)", + "narrative_ar": "إحدى أعظم التحف المعمارية البيزنطية في العالم وجزء من المدن المنسية شمال غرب حلب، شيدت حول العمود الحجري الذي عاش فوقه القديس سمعان العمودي متعبداً، وتتكون من أربع بازيليكات متعامدة تلتقي في فناء مثمن مركزي بديع.", + "narrative": "إحدى أعظم التحف المعمارية البيزنطية في العالم شمال غرب حلب.", + "centroid": { + "lat": 36.3342, + "lng": 36.8336 + }, + "gate": { + "lat": 36.3351, + "lng": 36.8347 + }, + "parking": { + "lat": 36.3358, + "lng": 36.8356 + }, + "ticket": { + "lat": 36.3349, + "lng": 36.8345 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Church_of_Saint_Simeon_Stylites.jpg/1200px-Church_of_Saint_Simeon_Stylites.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Church_of_Saint_Simeon_Stylites.jpg/1200px-Church_of_Saint_Simeon_Stylites.jpg", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "metadata": { + "unesco_id": 1343, + "country": "سوريا", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "opening_hours": "09:00 - 17:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 36.3342, + "lng": 36.8336 + }, + "access_gate": { + "lat": 36.3351, + "lng": 36.8347 + }, + "parking": { + "lat": 36.3358, + "lng": 36.8356 + }, + "ticket_office": { + "lat": 36.3349, + "lng": 36.8345 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 312, + "slug": "qasr-al-hayr-al-sharqi", + "name_ar": "قصر الحير الشرقي الأموي في بادية الشام", + "name_en": "Qasr al-Hayr al-Sharqi Umayyad Desert Palace", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Homs", + "category": "historic_palace", + "tier": "Heritage Landmark", + "era": "الأموي (728 م / الخليفة هشام بن عبد الملك)", + "narrative_ar": "قصر وحصن صحراوي أموي باذخ شيده الخليفة هشام بن عبد الملك وسط بادية الشام، يضم قصرين كبير وصغير محاطين بأسوار وأبراج حجرية دائرية، ومسجداً وبستاناً واسعاً وسدوداً ونظام ري مائي عبقري لتجميع مياه السيول.", + "narrative": "قصر وحصن صحراوي أموي باذخ شيده الخليفة هشام بن عبد الملك وسط بادية الشام.", + "centroid": { + "lat": 35.0733, + "lng": 39.0711 + }, + "gate": { + "lat": 35.0741, + "lng": 39.0722 + }, + "parking": { + "lat": 35.0748, + "lng": 39.0731 + }, + "ticket": { + "lat": 35.0739, + "lng": 39.072 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Qasr_al-Hayr_al-Sharqi.jpg/1200px-Qasr_al-Hayr_al-Sharqi.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Qasr_al-Hayr_al-Sharqi.jpg/1200px-Qasr_al-Hayr_al-Sharqi.jpg", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "metadata": { + "country": "سوريا", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "opening_hours": "08:00 - 17:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 35.0733, + "lng": 39.0711 + }, + "access_gate": { + "lat": 35.0741, + "lng": 39.0722 + }, + "parking": { + "lat": 35.0748, + "lng": 39.0731 + }, + "ticket_office": { + "lat": 35.0739, + "lng": 39.072 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 313, + "slug": "sayyida-ruqayya-shrine-damascus", + "name_ar": "مشهد وضريح السيدة رقية في دمشق القديمة", + "name_en": "Sayyida Ruqayya Historic Shrine Damascus", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Damascus", + "category": "religious_heritage", + "tier": "Religious & Historic Shrine", + "era": "الإسلامي التاريخي (قرب الجامع الأموي)", + "narrative_ar": "يقع في حي العمارة بدمشق القديمة على بعد خطوات من الجامع الأموي، ويضم ضريح السيدة رقية بنت الإمام الحسين بن علي، ويعد معلماً معمارياً بارزاً بزخارف المرايا المقرنصة والقاشاني الإيراني والدمشقي البديع.", + "narrative": "يقع في حي العمارة بدمشق القديمة على بعد خطوات من الجامع الأموي.", + "centroid": { + "lat": 33.5128, + "lng": 36.3061 + }, + "gate": { + "lat": 33.5133, + "lng": 36.3067 + }, + "parking": { + "lat": 33.5139, + "lng": 36.3075 + }, + "ticket": { + "lat": 33.5131, + "lng": 36.3065 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Sayyidah_Ruqayya_Mosque_Damascus.jpg/1200px-Sayyidah_Ruqayya_Mosque_Damascus.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Sayyidah_Ruqayya_Mosque_Damascus.jpg/1200px-Sayyidah_Ruqayya_Mosque_Damascus.jpg", + "curator": "إدارة العتبات الدينية والآثار بدمشق", + "metadata": { + "country": "سوريا", + "curator": "إدارة العتبات الدينية والآثار بدمشق", + "opening_hours": "04:00 - 23:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 33.5128, + "lng": 36.3061 + }, + "access_gate": { + "lat": 33.5133, + "lng": 36.3067 + }, + "parking": { + "lat": 33.5139, + "lng": 36.3075 + }, + "ticket_office": { + "lat": 33.5131, + "lng": 36.3065 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 314, + "slug": "khan-asad-pasha-damascus", + "name_ar": "خان أسعد باشا العظم في دمشق القديمة", + "name_en": "Khan As'ad Pasha Al-Azem Damascus", + "country": "سوريا", + "country_en": "Syria", + "governorate": "Damascus", + "category": "historic_palace", + "tier": "Tier-1 Sovereign Anchor", + "era": "العثماني (1752 م / والي دمشق أسعد باشا العظم)", + "narrative_ar": "أكبر وأروع خان تاريخي في دمشق القديمة يقع في سوق البزورية، تبلغ مساحته 2500 متر مربع ويتميز بقبابه التسع المحمولة على أربعة أعمدة عملاقة وبنائه من الحجر الأبيض والأسود (الأبلق) وبركته الرخامية الوسطية.", + "narrative": "أكبر وأروع خان تاريخي في دمشق القديمة يقع في سوق البزورية.", + "centroid": { + "lat": 33.5103, + "lng": 36.3075 + }, + "gate": { + "lat": 33.5108, + "lng": 36.3081 + }, + "parking": { + "lat": 33.5115, + "lng": 36.309 + }, + "ticket": { + "lat": 33.5106, + "lng": 36.3079 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/Khan_As%27ad_Pasha_Damascus.jpg/1200px-Khan_As%27ad_Pasha_Damascus.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/Khan_As%27ad_Pasha_Damascus.jpg/1200px-Khan_As%27ad_Pasha_Damascus.jpg", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "metadata": { + "country": "سوريا", + "curator": "المديرية العامة للآثار والمتاحف السورية (DGAM)", + "opening_hours": "09:00 - 17:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 33.5103, + "lng": 36.3075 + }, + "access_gate": { + "lat": 33.5108, + "lng": 36.3081 + }, + "parking": { + "lat": 33.5115, + "lng": 36.309 + }, + "ticket_office": { + "lat": 33.5106, + "lng": 36.3079 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 412, + "slug": "imam-shafii-shrine-cairo", + "name_ar": "قبة وضريح الإمام الشافعي الأثري بالقاهرة", + "name_en": "Imam Al-Shafi'i Dome and Mausoleum", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Cairo", + "category": "religious_heritage", + "tier": "Tier-1 Sovereign Anchor", + "era": "الأيوبي والمملوكي (1211 م / السلطان الكامل الأيوبي)", + "narrative_ar": "أكبر قبة خشبية ضريحية مبنية في مصر الإسلامية، شيدها السلطان الكامل الأيوبي فوق ضريح الإمام محمد بن إدريس الشافعي مؤسس المذهب الشافعي، وتتوجها قارب نحاسي فلكي (العشارية) ونقوش جصية وخشبية أيوبية نادرة.", + "narrative": "أكبر قبة خشبية ضريحية مبنية في مصر الإسلامية في القاهرة.", + "centroid": { + "lat": 30.0125, + "lng": 31.2562 + }, + "gate": { + "lat": 30.0128, + "lng": 31.2567 + }, + "parking": { + "lat": 30.0132, + "lng": 31.2573 + }, + "ticket": { + "lat": 30.0127, + "lng": 31.2565 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Imam_Shafi%27i_Mausoleum_Cairo.jpg/1200px-Imam_Shafi%27i_Mausoleum_Cairo.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Imam_Shafi%27i_Mausoleum_Cairo.jpg/1200px-Imam_Shafi%27i_Mausoleum_Cairo.jpg", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "metadata": { + "unesco_id": 89, + "country": "مصر", + "curator": "وزارة السياحة والآثار المصرية (MoTA)", + "opening_hours": "09:00 - 17:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 30.0125, + "lng": 31.2562 + }, + "access_gate": { + "lat": 30.0128, + "lng": 31.2567 + }, + "parking": { + "lat": 30.0132, + "lng": 31.2573 + }, + "ticket_office": { + "lat": 30.0127, + "lng": 31.2565 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 413, + "slug": "sayyida-nafisa-shrine-cairo", + "name_ar": "مشهد وضريح السيدة نفيسة التاريخي بالقاهرة", + "name_en": "Sayyida Nafisa Historic Mosque & Shrine", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Cairo", + "category": "religious_heritage", + "tier": "Religious & Historic Shrine", + "era": "الفاطمي والمملوكي (سيدة أهل البيت في مصر)", + "narrative_ar": "يقع في درب السباع بالقاهرة التاريخية، ويضم ضريح السيدة نفيسة بنت الحسن بن زيد بن الحسن بن علي بن أبي طالب رضي الله عنهم، الملقبة بنفيسة العلوم وصاحبة المكانة الروحية والتاريخية الكبرى لدى المصريين.", + "narrative": "يقع في درب السباع بالقاهرة التاريخية، ويضم ضريح السيدة نفيسة نفيسة العلوم.", + "centroid": { + "lat": 30.0225, + "lng": 31.2528 + }, + "gate": { + "lat": 30.0229, + "lng": 31.2533 + }, + "parking": { + "lat": 30.0235, + "lng": 31.2541 + }, + "ticket": { + "lat": 30.0227, + "lng": 31.2531 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Sayyida_Nafisa_Mosque_Cairo.jpg/1200px-Sayyida_Nafisa_Mosque_Cairo.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Sayyida_Nafisa_Mosque_Cairo.jpg/1200px-Sayyida_Nafisa_Mosque_Cairo.jpg", + "curator": "وزارة الأوقاف والآثار المصرية", + "metadata": { + "country": "مصر", + "curator": "وزارة الأوقاف والآثار المصرية", + "opening_hours": "04:00 - 23:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 30.0225, + "lng": 31.2528 + }, + "access_gate": { + "lat": 30.0229, + "lng": 31.2533 + }, + "parking": { + "lat": 30.0235, + "lng": 31.2541 + }, + "ticket_office": { + "lat": 30.0227, + "lng": 31.2531 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 414, + "slug": "sayyid-ahmad-al-badawi-tanta", + "name_ar": "مسجد وضريح سيدي أحمد البدوي بطنطا", + "name_en": "Ahmad al-Badawi Historic Mosque in Tanta", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Gharbia", + "category": "religious_heritage", + "tier": "Religious & Historic Shrine", + "era": "المملوكي (القرن 13 الميلادي / 1276 م)", + "narrative_ar": "أحد أكبر وأهم المعالم الدينية التاريخية في دلتا مصر بمدينة طنطا، أسسه السلطان الظاهر بيبرس والسلطان قايتباي حول ضريح القطب الصوفي أحمد البدوي، ويتميز بمآذنه الرشيقة وقبابه الشامخة وصحنه الواسع.", + "narrative": "أحد أكبر وأهم المعالم الدينية التاريخية في دلتا مصر بمدينة طنطا.", + "centroid": { + "lat": 30.7872, + "lng": 31.0006 + }, + "gate": { + "lat": 30.7876, + "lng": 31.0011 + }, + "parking": { + "lat": 30.7882, + "lng": 31.002 + }, + "ticket": { + "lat": 30.7874, + "lng": 31.0009 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/El-Sayed_El-Badawy_Mosque_Tanta.jpg/1200px-El-Sayed_El-Badawy_Mosque_Tanta.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/El-Sayed_El-Badawy_Mosque_Tanta.jpg/1200px-El-Sayed_El-Badawy_Mosque_Tanta.jpg", + "curator": "وزارة الأوقاف المصرية والآثار الإسلامية", + "metadata": { + "country": "مصر", + "curator": "وزارة الأوقاف المصرية والآثار الإسلامية", + "opening_hours": "04:00 - 23:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 30.7872, + "lng": 31.0006 + }, + "access_gate": { + "lat": 30.7876, + "lng": 31.0011 + }, + "parking": { + "lat": 30.7882, + "lng": 31.002 + }, + "ticket_office": { + "lat": 30.7874, + "lng": 31.0009 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null + }, + { + "id": 415, + "slug": "st-anthony-monastery-red-sea", + "name_ar": "دير الأنبا أنطونيوس الأثري في الصحراء الشرقية", + "name_en": "Monastery of Saint Anthony in the Eastern Desert", + "country": "مصر", + "country_en": "Egypt", + "governorate": "Red Sea", + "category": "religious_heritage", + "tier": "Religious & Historic Shrine", + "era": "القبطي المبكر (356 م / مهد الرهبنة المسيحية)", + "narrative_ar": "أول وأقدم دير مسيحي رهباني أسس في العالم بقلب جبال الجلالة بالصحراء الشرقية للبحر الأحمر، شيده أتباع القديس أنطونيوس الكبير أبو الرهبان، ويضم مغارته الجبلية وكنائسه الأثرية ذات الرسوم الجدارية القبطية النادرة وعين الماء العذبة.", + "narrative": "أول وأقدم دير مسيحي رهباني أسس في العالم بقلب جبال الجلالة بالصحراء الشرقية.", + "centroid": { + "lat": 28.9242, + "lng": 32.3497 + }, + "gate": { + "lat": 28.9251, + "lng": 32.3508 + }, + "parking": { + "lat": 28.9258, + "lng": 32.3516 + }, + "ticket": { + "lat": 28.9249, + "lng": 32.3506 + }, + "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Saint_Anthony%27s_Monastery.jpg/1200px-Saint_Anthony%27s_Monastery.jpg", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Saint_Anthony%27s_Monastery.jpg/1200px-Saint_Anthony%27s_Monastery.jpg", + "curator": "الكنيسة القبطية الأرثوذكسية ووزارة الآثار", + "metadata": { + "country": "مصر", + "curator": "الكنيسة القبطية الأرثوذكسية ووزارة الآثار", + "opening_hours": "09:00 - 17:00 يومياً" + }, + "coordinates": { + "centroid": { + "lat": 28.9242, + "lng": 32.3497 + }, + "access_gate": { + "lat": 28.9251, + "lng": 32.3508 + }, + "parking": { + "lat": 28.9258, + "lng": 32.3516 + }, + "ticket_office": { + "lat": 28.9249, + "lng": 32.3506 + } + }, + "is_verified": true, + "site_polygon": null, + "admission": null } -] +] \ No newline at end of file diff --git a/apps/dashboard/public/style-3d-terrain.json b/apps/dashboard/public/style-3d-terrain.json index 723a53e..348ebb3 100644 --- a/apps/dashboard/public/style-3d-terrain.json +++ b/apps/dashboard/public/style-3d-terrain.json @@ -1,6 +1,6 @@ { "version": 8, - "name": "Intaleq Sovereign 3D Topographic & Terrain Style (\u062e\u0631\u064a\u0637\u0629 \u0627\u0644\u062a\u0636\u0627\u0631\u064a\u0633 \u062b\u0644\u0627\u062b\u064a\u0629 \u0627\u0644\u0623\u0628\u0639\u0627\u062f \u0627\u0644\u0633\u064a\u0627\u062f\u064a\u0629)", + "name": "Intaleq Sovereign 3D Topographic & Terrain Style (خريطة التضاريس ثلاثية الأبعاد السيادية)", "metadata": { "brand": "Intaleq", "version": "3.5.0-terrain-3d", @@ -28,13 +28,22 @@ "esri-satellite": { "type": "raster", "tiles": [ - "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}", - "https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}" + "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}" ], "tileSize": 256, - "maxzoom": 19, + "maxzoom": 18, "attribution": "© Esri, DigitalGlobe, GeoEye, Earthstar Geographics" }, + "opentopo-contours": { + "type": "raster", + "tiles": [ + "https://a.tile.opentopomap.org/{z}/{x}/{y}.png", + "https://b.tile.opentopomap.org/{z}/{x}/{y}.png", + "https://c.tile.opentopomap.org/{z}/{x}/{y}.png" + ], + "tileSize": 256, + "maxzoom": 17 + }, "jordan_contours": { "type": "vector", "tiles": [ @@ -101,12 +110,11 @@ "type": "raster", "source": "esri-satellite", "layout": { - "visibility": "visible" + "visibility": "none" }, "paint": { - "raster-opacity": 1.0, - "raster-saturation": 0.2, - "raster-contrast": 0.08 + "raster-opacity": 0.95, + "raster-saturation": 0.1 } }, { @@ -119,10 +127,10 @@ "paint": { "hillshade-illumination-direction": 315, "hillshade-illumination-anchor": "viewport", - "hillshade-shadow-color": "#111111", - "hillshade-highlight-color": "#ffffff", - "hillshade-accent-color": "#332211", - "hillshade-exaggeration": 0.45 + "hillshade-shadow-color": "#261d15", + "hillshade-highlight-color": "#fffbf2", + "hillshade-accent-color": "#784a28", + "hillshade-exaggeration": 0.75 } }, { @@ -132,21 +140,9 @@ "source-layer": "planet_osm_polygon", "filter": [ "any", - [ - "==", - "natural", - "water" - ], - [ - "==", - "water", - "lake" - ], - [ - "==", - "waterway", - "riverbank" - ] + ["==", "natural", "water"], + ["==", "water", "lake"], + ["==", "waterway", "riverbank"] ], "paint": { "fill-color": "#0284c7", @@ -160,21 +156,9 @@ "source-layer": "planet_osm_polygon", "filter": [ "any", - [ - "==", - "natural", - "wood" - ], - [ - "==", - "landuse", - "forest" - ], - [ - "==", - "leisure", - "nature_reserve" - ] + ["==", "natural", "wood"], + ["==", "landuse", "forest"], + ["==", "leisure", "nature_reserve"] ], "paint": { "fill-color": "#4d7c0f", @@ -188,21 +172,9 @@ "source-layer": "planet_osm_polygon", "filter": [ "any", - [ - "==", - "natural", - "sand" - ], - [ - "==", - "natural", - "desert" - ], - [ - "==", - "natural", - "scree" - ] + ["==", "natural", "sand"], + ["==", "natural", "desert"], + ["==", "natural", "scree"] ], "paint": { "fill-color": "#ea580c", @@ -226,20 +198,28 @@ "line-color": "#0284c7", "line-width": [ "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 8, - 1, - 14, - 3.5 + ["linear"], + ["zoom"], + 8, 1, + 14, 3.5 ], "line-opacity": 0.7 } }, + { + "id": "contours-raster-overlay", + "type": "raster", + "source": "opentopo-contours", + "minzoom": 8, + "maxzoom": 18, + "layout": { + "visibility": "visible" + }, + "paint": { + "raster-opacity": 0.55, + "raster-contrast": 0.2 + } + }, { "id": "contour-minor-lines", "type": "line", @@ -296,16 +276,10 @@ "line-color": "#ffffff", "line-width": [ "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 8, - 2, - 14, - 6 + ["linear"], + ["zoom"], + 8, 2, + 14, 6 ], "line-opacity": 0.9 } @@ -325,16 +299,10 @@ "line-color": "#d97706", "line-width": [ "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 8, - 1.2, - 14, - 4.5 + ["linear"], + ["zoom"], + 8, 1.2, + 14, 4.5 ] } }, @@ -353,16 +321,10 @@ "line-color": "#f59e0b", "line-width": [ "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 9, - 1, - 14, - 3.2 + ["linear"], + ["zoom"], + 9, 1, + 14, 3.2 ] } }, @@ -384,16 +346,10 @@ "line-color": "#ffffff", "line-width": [ "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 13.5, - 0.9, - 16, - 2.5 + ["linear"], + ["zoom"], + 13.5, 0.9, + 16, 2.5 ], "line-opacity": 0.8 } @@ -414,14 +370,8 @@ "layout": { "text-field": [ "coalesce", - [ - "get", - "name:ar" - ], - [ - "get", - "name" - ], + ["get", "name:ar"], + ["get", "name"], "" ], "text-font": [ @@ -430,18 +380,11 @@ ], "text-size": [ "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 12, - 10, - 15, - 12, - 18, - 14 + ["linear"], + ["zoom"], + 12, 10, + 15, 12, + 18, 14 ], "symbol-placement": "line", "text-rotation-alignment": "map", @@ -475,14 +418,8 @@ "layout": { "text-field": [ "coalesce", - [ - "get", - "name:ar" - ], - [ - "get", - "name" - ], + ["get", "name:ar"], + ["get", "name"], "" ], "text-font": [ @@ -491,18 +428,11 @@ ], "text-size": [ "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 13.5, - 9.5, - 16, - 11, - 18, - 13 + ["linear"], + ["zoom"], + 13.5, 9.5, + 16, 11, + 18, 13 ], "symbol-placement": "line", "text-rotation-alignment": "map", @@ -536,14 +466,8 @@ "layout": { "text-field": [ "coalesce", - [ - "get", - "name:ar" - ], - [ - "get", - "name" - ], + ["get", "name:ar"], + ["get", "name"], "" ], "text-font": [ @@ -552,16 +476,10 @@ ], "text-size": [ "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 16, - 9.5, - 18, - 11.5 + ["linear"], + ["zoom"], + 16, 9.5, + 18, 11.5 ], "symbol-placement": "line", "text-rotation-alignment": "map", @@ -589,14 +507,8 @@ "layout": { "text-field": [ "coalesce", - [ - "get", - "name:ar" - ], - [ - "get", - "name" - ], + ["get", "name:ar"], + ["get", "name"], "" ], "text-font": [ @@ -605,16 +517,10 @@ ], "text-size": [ "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 16.5, - 9, - 18, - 11.5 + ["linear"], + ["zoom"], + 16.5, 9, + 18, 11.5 ], "symbol-placement": "line", "text-rotation-alignment": "map", @@ -645,10 +551,7 @@ "paint": { "fill-color": "#0f172a", "fill-opacity": 0.45, - "fill-translate": [ - 12, - 4 - ], + "fill-translate": [12, 4], "fill-translate-anchor": "map" } }, @@ -664,44 +567,69 @@ "paint": { "fill-extrusion-color": [ "interpolate", - [ - "linear" - ], - [ - "coalesce", - [ - "get", - "height" - ], - 12 - ], - 0, - "#e7e5e4", - 30, - "#d6d3d1", - 70, - "#a8a29e", - 150, - "#78716c" + ["linear"], + ["coalesce", ["get", "height"], 12], + 0, "#e7e5e4", + 30, "#d6d3d1", + 70, "#a8a29e", + 150, "#78716c" ], "fill-extrusion-height": [ "coalesce", - [ - "get", - "height" - ], - [ - "*", - [ - "coalesce", - [ - "get", - "num_floors" - ], - 3 - ], - 3.5 - ] + ["get", "height"], + ["*", ["coalesce", ["get", "num_floors"], 3], 3.5] + ], + "fill-extrusion-base": 0, + "fill-extrusion-opacity": 0.88 + } + }, + { + "id": "osm-buildings-ground-shadows", + "type": "fill", + "source": "local-osm-polygons", + "source-layer": "planet_osm_polygon", + "filter": [ + "has", + "building" + ], + "minzoom": 13.5, + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "#0f172a", + "fill-opacity": 0.45, + "fill-translate": [12, 4], + "fill-translate-anchor": "map" + } + }, + { + "id": "osm-buildings-extrusion", + "type": "fill-extrusion", + "source": "local-osm-polygons", + "source-layer": "planet_osm_polygon", + "filter": [ + "has", + "building" + ], + "minzoom": 13.5, + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-extrusion-color": [ + "interpolate", + ["linear"], + ["coalesce", ["get", "height"], 12], + 0, "#e7e5e4", + 30, "#d6d3d1", + 70, "#a8a29e", + 150, "#78716c" + ], + "fill-extrusion-height": [ + "coalesce", + ["get", "height"], + ["*", ["coalesce", ["get", "building:levels"], 2.5], 3.5] ], "fill-extrusion-base": 0, "fill-extrusion-opacity": 0.88 @@ -739,48 +667,16 @@ "layout": { "text-field": [ "format", - [ - "coalesce", - [ - "get", - "name:ar" - ], - [ - "get", - "name" - ], - "\u0642\u0645\u0629 \u062c\u0628\u0644\u064a\u0629" - ], + ["coalesce", ["get", "name:ar"], ["get", "name"], "قمة جبلية"], {}, - "\n\u25b2 ", - { - "font-scale": 0.8 - }, - [ - "concat", - [ - "coalesce", - [ - "get", - "ele" - ], - "" - ], - " \u0645" - ], - { - "font-scale": 0.75 - } - ], - "text-font": [ - "Noto Sans Arabic Regular", - "Open Sans Regular" + "\n▲ ", + { "font-scale": 0.8 }, + ["concat", ["coalesce", ["get", "ele"], ""], " م"], + { "font-scale": 0.75 } ], + "text-font": ["Noto Sans Arabic Regular", "Open Sans Regular"], "text-size": 11.5, - "text-offset": [ - 0, - 1.2 - ], + "text-offset": [0, 1.2], "text-anchor": "top", "text-max-width": 10 }, @@ -797,60 +693,23 @@ "source-layer": "places_jordan", "filter": [ "any", - [ - "==", - "category", - "city" - ], - [ - "==", - "category", - "town" - ], - [ - "==", - "category", - "governorate" - ], - [ - "==", - "category", - "capital" - ] + ["==", "category", "city"], + ["==", "category", "town"], + ["==", "category", "governorate"], + ["==", "category", "capital"] ], "minzoom": 6, "maxzoom": 11, "layout": { - "text-field": [ - "coalesce", - [ - "get", - "name_ar" - ], - [ - "get", - "name" - ], - "" - ], - "text-font": [ - "Noto Sans Arabic Bold", - "Open Sans Bold" - ], + "text-field": ["coalesce", ["get", "name_ar"], ["get", "name"], ""], + "text-font": ["Noto Sans Arabic Bold", "Open Sans Bold"], "text-size": [ "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 6, - 10, - 9, - 12, - 11, - 14 + ["linear"], + ["zoom"], + 6, 10, + 9, 12, + 11, 14 ], "text-padding": 24, "text-allow-overlap": false, @@ -865,4 +724,4 @@ } } ] -} \ No newline at end of file +} diff --git a/apps/siro_maps/ios/Podfile b/apps/siro_maps/ios/Podfile index 7eff7c9..21459b8 100644 --- a/apps/siro_maps/ios/Podfile +++ b/apps/siro_maps/ios/Podfile @@ -38,5 +38,8 @@ end post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) + target.build_configurations.each do |config| + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' + end end end diff --git a/apps/siro_maps/ios/Podfile.lock b/apps/siro_maps/ios/Podfile.lock index b111b4d..5bc6351 100644 --- a/apps/siro_maps/ios/Podfile.lock +++ b/apps/siro_maps/ios/Podfile.lock @@ -69,6 +69,6 @@ SPEC CHECKSUMS: permission_handler_apple: 92d754bbaa7361d436db2d6c3c1c2a0fdcec462e shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb -PODFILE CHECKSUM: f8c2dcdfb50bb67645580d28a6bf814fca30bdec +PODFILE CHECKSUM: 50fd0505f665bfa50c65bca6a6da7109c67dd0c6 COCOAPODS: 1.16.2 diff --git a/apps/siro_maps/lib/data/models/route_model.dart b/apps/siro_maps/lib/data/models/route_model.dart index 50d4777..3dde68b 100644 --- a/apps/siro_maps/lib/data/models/route_model.dart +++ b/apps/siro_maps/lib/data/models/route_model.dart @@ -58,3 +58,13 @@ class RouteData { return '$minutes دقيقة'; } } + +class RouteException implements Exception { + final String message; + final int? statusCode; + + const RouteException(this.message, {this.statusCode}); + + @override + String toString() => message; +} diff --git a/apps/siro_maps/lib/data/models/tourist_landmark_model.dart b/apps/siro_maps/lib/data/models/tourist_landmark_model.dart new file mode 100644 index 0000000..7037b14 --- /dev/null +++ b/apps/siro_maps/lib/data/models/tourist_landmark_model.dart @@ -0,0 +1,202 @@ +import 'package:flutter/material.dart'; +import 'package:maplibre_gl/maplibre_gl.dart'; +import 'place_model.dart'; + +class TouristLandmark { + final String id; + final String nameAr; + final String nameEn; + final String category; // heritage, nature, religious, adventure, coastal + final String categoryAr; + final String description; + final double latitude; + final double longitude; + final double elevationMeters; + final String bestTimeToVisit; + final String tag; + final IconData iconData; + final Color accentColor; + + const TouristLandmark({ + required this.id, + required this.nameAr, + required this.nameEn, + required this.category, + required this.categoryAr, + required this.description, + required this.latitude, + required this.longitude, + required this.elevationMeters, + required this.bestTimeToVisit, + required this.tag, + required this.iconData, + required this.accentColor, + }); + + LatLng get coordinates => LatLng(latitude, longitude); + + PlaceModel toPlaceModel() { + return PlaceModel( + id: id, + name: nameAr, + category: category, + latitude: latitude, + longitude: longitude, + elevationMeters: elevationMeters, + address: '$categoryAr • $tag', + ); + } + + static const List curatedJordanLandmarks = [ + TouristLandmark( + id: 'tourist_petra', + nameAr: 'البتراء (المدينة الوردية)', + nameEn: 'Petra', + category: 'heritage', + categoryAr: 'عجائب الدنيا السبع والتراث العالمي', + description: 'عاصمة مملكة الأنباط المنحوتة في الصخور الجبلية الوردية، تضم الخزنة والسيق والدير، وتعد من أعظم التحف المعمارية في التاريخ الإنساني.', + latitude: 30.3285, + longitude: 35.4444, + elevationMeters: 885.0, + bestTimeToVisit: 'الصباح الباكر أو عند الغروب الذهبي', + tag: 'عجائب الدنيا السبع • UNESCO', + iconData: Icons.castle_rounded, + accentColor: Color(0xFFD97706), + ), + TouristLandmark( + id: 'tourist_wadi_rum', + nameAr: 'وادي رم (وادي القمر)', + nameEn: 'Wadi Rum', + category: 'adventure', + categoryAr: 'صحراء تكتيكية وجبال جرانيتية', + description: 'أودية صحراوية شاهقة وجبال صخرية ترتفع لأكثر من 1700 متر، مشهورة بالرمال الحمراء والتخييم الفلكي ومسارات السفاري والمغامرات.', + latitude: 29.5734, + longitude: 35.4210, + elevationMeters: 1050.0, + bestTimeToVisit: 'مساءً للتخييم الفلكي ومشاهدة النجوم', + tag: 'تراث عالمي • سياحة فلكية ومغامرات', + iconData: Icons.landscape_rounded, + accentColor: Color(0xFFEA580C), + ), + TouristLandmark( + id: 'tourist_dead_sea', + nameAr: 'البحر الميت والموجب', + nameEn: 'Dead Sea & Mujib Canyon', + category: 'nature', + categoryAr: 'أخفض نقطة على وجه الأرض', + description: 'أخفض مسطح مائي في العالم بانخفاض 430 متراً تحت سطح البحر، مياهه الغنية بالأملاح المعدنية ومضيق وادي الموجب المائي للمغامرات المائية.', + latitude: 31.5085, + longitude: 35.5684, + elevationMeters: -430.0, + bestTimeToVisit: 'أشهر الشتاء والربيع (مناخ دافئ)', + tag: 'أخفض نقطة في العالم • علاج طبيعي', + iconData: Icons.waves_rounded, + accentColor: Color(0xFF0284C7), + ), + TouristLandmark( + id: 'tourist_jerash', + nameAr: 'مدينة جرش الأثرية (بومبي الشرق)', + nameEn: 'Jerash Roman Ruins', + category: 'heritage', + categoryAr: 'أعظم المدن الرومانية المحفوظة', + description: 'إحدى مدن حلف الديكابوليس الروماني، تضم شارع الأعمدة، المسرح الجنوبي، معبد أرتميس، وساحة الندوة البيضاوية الفريدة من نوعها.', + latitude: 32.2811, + longitude: 35.8917, + elevationMeters: 590.0, + bestTimeToVisit: 'فترة الصباح والظهيرة المعتدلة', + tag: 'حضارة رومانية • شارع الأعمدة', + iconData: Icons.account_balance_rounded, + accentColor: Color(0xFFB45309), + ), + TouristLandmark( + id: 'tourist_amman_citadel', + nameAr: 'جبل القلعة والمدرج الروماني (عمان)', + nameEn: 'Amman Citadel & Roman Theatre', + category: 'heritage', + categoryAr: 'قلب العاصمة التاريخي وتراث العمونيين', + description: 'موقع يروي تاريخ الحضارات العمونية واليونانية والرومانية والأموية، يطل على جبال عمان القديمة مع معبد هرقل والقصر الأموي المهيب.', + latitude: 31.9547, + longitude: 35.9352, + elevationMeters: 850.0, + bestTimeToVisit: 'قبل الغروب لإطلالة بانورامية على عمان', + tag: 'معبد هرقل • القصر الأموي', + iconData: Icons.fort_rounded, + accentColor: Color(0xFF4F46E5), + ), + TouristLandmark( + id: 'tourist_ajloun_castle', + nameAr: 'قلعة عجلون (حصن صلاح الدين)', + nameEn: 'Ajloun Castle', + category: 'heritage', + categoryAr: 'قلاع العصور الوسطى وغابات الشمال', + description: 'حصن بناه القائد عز الدين أسامة أحد قادة صلاح الدين الأيوبي عام 1184م لمراقبة طرق التجارة وحماية مناجم الحديد في جبال عجلون.', + latitude: 32.3251, + longitude: 35.7275, + elevationMeters: 1023.0, + bestTimeToVisit: 'فصل الربيع بين غابات البلوط والصنوبر', + tag: 'تاريخ إسلامي • إطلالة وادي الأردن', + iconData: Icons.shield_rounded, + accentColor: Color(0xFF15803D), + ), + TouristLandmark( + id: 'tourist_mount_nebo', + nameAr: 'جبل نيبو ومادبا (مدينة الفسيفساء)', + nameEn: 'Mount Nebo & Madaba', + category: 'religious', + categoryAr: 'موقع تاريخي وديني وإطلالة مقدسة', + description: 'موقع ذو مكانة تاريخية وروحية كبرى، يطل على وادي الأردن والقدس والبحر الميت، ومادبا الشهيرة بأقدم خارطة فسيفسائية للأراضي المقدسة.', + latitude: 31.7683, + longitude: 35.7253, + elevationMeters: 817.0, + bestTimeToVisit: 'الأيام الصافية لرؤية أفق القدس والضفة', + tag: 'فسيفساء بيزنطية • إطلالة بانورامية', + iconData: Icons.church_rounded, + accentColor: Color(0xFF9333EA), + ), + TouristLandmark( + id: 'tourist_umm_qais', + nameAr: 'أم قيس (جدارا الأثرية)', + nameEn: 'Umm Qais (Gadara)', + category: 'heritage', + categoryAr: 'شرفة الشمال وإطلالة طبريا والجولان', + description: 'مدينة الفلاسفة القديمة المشيدة بالحجارة البازلتية السوداء، تطل على بحيرة طبريا، نهر اليرموك، وهضبة الجولان السورية في مشهد جغرافي ساحر.', + latitude: 32.6534, + longitude: 35.6847, + elevationMeters: 378.0, + bestTimeToVisit: 'وقت المغيب لمشاهدة بحيرة طبريا', + tag: 'إطلالة ثلاثية الحدود • حجر بازلتي', + iconData: Icons.visibility_rounded, + accentColor: Color(0xFF0D9488), + ), + TouristLandmark( + id: 'tourist_dana_biosphere', + nameAr: 'محمية ضانا للمحيط الحيوي', + nameEn: 'Dana Biosphere Reserve', + category: 'nature', + categoryAr: 'محمية جبلية وأودية طبيعية عذراء', + description: 'أكبر محمية طبيعية في الأردن، تمتد من قمم جبال القادسية بارتفاع 1500 متر نزولاً إلى وادي عربة، تضم تنوعاً نباتياً وحيوانياً فريداً ومسارات مشي.', + latitude: 30.6865, + longitude: 35.6120, + elevationMeters: 1250.0, + bestTimeToVisit: 'فصل الخريف والربيع للمسارات الجبلية', + tag: 'سياحة بيئية • مسارات مشي جبلية', + iconData: Icons.forest_rounded, + accentColor: Color(0xFF16A34A), + ), + TouristLandmark( + id: 'tourist_aqaba', + nameAr: 'العقبة (خليج العقبة والشعب المرجانية)', + nameEn: 'Aqaba Red Sea Coast', + category: 'coastal', + categoryAr: 'عروس البحر الأحمر والرياضات البحرية', + description: 'المنفذ البحري الوحيد، شواطئ دافئة طوال العام، غوص بين الشعب المرجانية المحمية عالمياً، ومشاهدة الحياة البحرية الغنية.', + latitude: 29.5320, + longitude: 35.0063, + elevationMeters: 10.0, + bestTimeToVisit: 'طوال العام، ومثالية في فصلي الخريف والشتاء', + tag: 'غوص وشواطئ • شمس دافئة', + iconData: Icons.sailing_rounded, + accentColor: Color(0xFF0284C7), + ), + ]; +} diff --git a/apps/siro_maps/lib/data/repositories/map_saas_repository.dart b/apps/siro_maps/lib/data/repositories/map_saas_repository.dart index 99fa6da..b0e34ab 100644 --- a/apps/siro_maps/lib/data/repositories/map_saas_repository.dart +++ b/apps/siro_maps/lib/data/repositories/map_saas_repository.dart @@ -96,12 +96,35 @@ class MapSaasRepository { return routes; } else { print("⚠️ [MapSaasRepo] Route fetch returned non-200 status: ${response.statusCode}, body: ${response.body}"); + String? serverMsg; + try { + final errJson = jsonDecode(response.body); + serverMsg = errJson['message']?.toString(); + } catch (_) {} + + if (response.statusCode == 502 || response.statusCode == 503 || response.statusCode == 504) { + throw RouteException( + 'خادم حساب المسارات قيد إعادة التشغيل أو التحديث (502)، يرجى المحاولة بعد لحظات.', + statusCode: response.statusCode, + ); + } else if (response.statusCode == 422) { + throw RouteException( + serverMsg ?? 'الموقع المحدد خارج نطاق التغطية المعتمدة لشبكة الطرق.', + statusCode: response.statusCode, + ); + } else { + throw RouteException( + serverMsg ?? 'تعذر حساب المسار حالياً (${response.statusCode}).', + statusCode: response.statusCode, + ); + } } + } on RouteException { + rethrow; } catch (e) { print("❌ [MapSaasRepo] getRoute exception: $e"); + throw const RouteException('تعذر الاتصال بالخادم، يرجى التحقق من اتصال الإنترنت والمحاولة مجدداً.'); } - - return []; } RouteData _parseRouteData({ diff --git a/apps/siro_maps/lib/logic/cubits/navigation/navigation_cubit.dart b/apps/siro_maps/lib/logic/cubits/navigation/navigation_cubit.dart index f825af1..172fab3 100644 --- a/apps/siro_maps/lib/logic/cubits/navigation/navigation_cubit.dart +++ b/apps/siro_maps/lib/logic/cubits/navigation/navigation_cubit.dart @@ -19,6 +19,7 @@ import '../../../core/services/vehicle_icon_generator.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../../data/models/hazard_model.dart'; import '../../../data/models/route_model.dart'; +import '../../../data/models/tourist_landmark_model.dart'; import '../../../data/repositories/map_saas_repository.dart'; import 'navigation_state.dart'; @@ -45,7 +46,8 @@ class NavigationCubit extends Cubit { ConnectivityService? connectivityService, }) : locationService = locationService ?? LocationService.instance, ttsService = ttsService ?? TtsService.instance, - connectivityService = connectivityService ?? ConnectivityService.instance, + connectivityService = + connectivityService ?? ConnectivityService.instance, super(const NavigationState()) { _init(); } @@ -90,22 +92,28 @@ class NavigationCubit extends Cubit { // Check & listen to network connectivity connectivityService.initialize(); final isOnline = await connectivityService.checkConnection(); - print("🌐 [NavigationCubit] Network connectivity status: isOnline=$isOnline"); + print( + "🌐 [NavigationCubit] Network connectivity status: isOnline=$isOnline"); emit(state.copyWith(isOnline: isOnline)); - _connectivitySub = connectivityService.onConnectivityChanged.listen((online) { + _connectivitySub = + connectivityService.onConnectivityChanged.listen((online) { print("🌐 [NavigationCubit] Connectivity changed event: online=$online"); emit(state.copyWith(isOnline: online)); }); // Default to Amman if initial position is fetching - final defaultPos = const LatLng(ApiConstants.defaultLat, ApiConstants.defaultLng); + final defaultPos = + const LatLng(ApiConstants.defaultLat, ApiConstants.defaultLng); emit(state.copyWith(myLocation: defaultPos, altitude: 0.0)); final position = await locationService.getCurrentPosition(); if (position != null) { final loc = LatLng(position.latitude, position.longitude); - final alt = (position.altitude.isNaN || position.altitude.isInfinite) ? 0.0 : position.altitude; - print("📍 [NavigationCubit] Initial GPS location acquired: lat=${loc.latitude.toStringAsFixed(6)}, lng=${loc.longitude.toStringAsFixed(6)}, alt=${alt.toStringAsFixed(1)}m, heading=${position.heading.toStringAsFixed(1)}°"); + final alt = (position.altitude.isNaN || position.altitude.isInfinite) + ? 0.0 + : position.altitude; + print( + "📍 [NavigationCubit] Initial GPS location acquired: lat=${loc.latitude.toStringAsFixed(6)}, lng=${loc.longitude.toStringAsFixed(6)}, alt=${alt.toStringAsFixed(1)}m, heading=${position.heading.toStringAsFixed(1)}°"); emit(state.copyWith( myLocation: loc, altitude: alt, @@ -116,7 +124,8 @@ class NavigationCubit extends Cubit { _currentDisplayHeading = position.heading; _updateCarMarker(loc, position.heading); } else { - print("⚠️ [NavigationCubit] Initial GPS returned null, using default Amman center"); + print( + "⚠️ [NavigationCubit] Initial GPS returned null, using default Amman center"); } _startLocationUpdates(); @@ -128,7 +137,8 @@ class NavigationCubit extends Cubit { int? _hasAnnouncedEarlyStepIndex; void onMapCreated(IntaleqMapController controller) { - print("🗺️ [NavigationCubit] onMapCreated: Native map view created, controller attached."); + print( + "🗺️ [NavigationCubit] onMapCreated: Native map view created, controller attached."); mapController = controller; emit(state.copyWith(status: NavigationStatus.mapReady)); } @@ -136,13 +146,18 @@ class NavigationCubit extends Cubit { Future _animateCameraToCurrentPosition() async { LatLng? target = state.myLocation; double heading = state.heading; - print("🎥 [NavigationCubit] _animateCameraToCurrentPosition (target=$target, styleLoaded=$_isMapStyleLoaded)"); + print( + "🎥 [NavigationCubit] _animateCameraToCurrentPosition (target=$target, styleLoaded=$_isMapStyleLoaded)"); - if (target == null || (target.latitude == ApiConstants.defaultLat && target.longitude == ApiConstants.defaultLng)) { + if (target == null || + (target.latitude == ApiConstants.defaultLat && + target.longitude == ApiConstants.defaultLng)) { final pos = await locationService.getCurrentPosition(); if (pos != null) { final loc = LatLng(pos.latitude, pos.longitude); - final alt = (pos.altitude.isNaN || pos.altitude.isInfinite) ? 0.0 : pos.altitude; + final alt = (pos.altitude.isNaN || pos.altitude.isInfinite) + ? 0.0 + : pos.altitude; target = loc; heading = pos.heading; emit(state.copyWith( @@ -178,7 +193,8 @@ class NavigationCubit extends Cubit { primaryColor: Color(state.selectedVehicleColor), ); await mapController!.addImage('current_vehicle_icon', bytes); - print("🚗 [NavigationCubit] Registered dynamic current_vehicle_icon (style=${state.selectedVehicleStyle}, color=0x${state.selectedVehicleColor.toRadixString(16)}, scale=${state.vehicleScale})"); + print( + "🚗 [NavigationCubit] Registered dynamic current_vehicle_icon (style=${state.selectedVehicleStyle}, color=0x${state.selectedVehicleColor.toRadixString(16)}, scale=${state.vehicleScale})"); } catch (e) { print("⚠️ [NavigationCubit] Error generating vehicle icon: $e"); } @@ -199,25 +215,225 @@ class NavigationCubit extends Cubit { // 3. Start & Destination pins try { final startBytes = await rootBundle.load('assets/images/A.png'); - await mapController!.addImage('start_icon', startBytes.buffer.asUint8List()); - await mapController!.addImage('asset_assets_images_A_png', startBytes.buffer.asUint8List()); + await mapController! + .addImage('start_icon', startBytes.buffer.asUint8List()); + await mapController!.addImage( + 'asset_assets_images_A_png', startBytes.buffer.asUint8List()); } catch (_) {} try { final destBytes = await rootBundle.load('assets/images/b.png'); - await mapController!.addImage('dest_icon', destBytes.buffer.asUint8List()); - await mapController!.addImage('asset_assets_images_b_png', destBytes.buffer.asUint8List()); + await mapController! + .addImage('dest_icon', destBytes.buffer.asUint8List()); + await mapController!.addImage( + 'asset_assets_images_b_png', destBytes.buffer.asUint8List()); } catch (_) {} } Future onStyleLoaded() async { - print("🎨 [NavigationCubit] onStyleLoaded: Map style rendered successfully! Registering custom icons & centering camera."); + print( + "🎨 [NavigationCubit] onStyleLoaded: Map style rendered successfully! Registering custom icons & centering camera."); _isMapStyleLoaded = true; await _loadCustomIcons(); if (state.myLocation != null) { - _updateCarMarker(_currentDisplayPosition ?? state.myLocation!, _currentDisplayHeading); + _updateCarMarker( + _currentDisplayPosition ?? state.myLocation!, _currentDisplayHeading); } _animateCameraToCurrentPosition(); + + // Apply 3D terrain exaggeration (default 2.0x) and sun lighting + applySunLighting(state.sunTimeMinutes, state.terrainExaggeration); + mapController?.setTilt(state.cameraTilt); + } + + // ── 3D CINEMATIC STUDIO & ORBIT ENGINE ──────────────────────── + + Timer? _orbitTimer; + Timer? _sunTimer; + + void toggleOrbit() { + final nextOrbiting = !state.isOrbiting; + emit(state.copyWith(isOrbiting: nextOrbiting)); + + _orbitTimer?.cancel(); + if (nextOrbiting) { + _orbitTimer = Timer.periodic(const Duration(milliseconds: 60), (_) { + if (isClosed || !state.isOrbiting) return; + mapController?.orbitStep( + state.orbitSpeed, + duration: const Duration(milliseconds: 60), + ); + }); + } + } + + void stopOrbit() { + _orbitTimer?.cancel(); + emit(state.copyWith(isOrbiting: false)); + } + + void setOrbitSpeed(double speed) { + emit(state.copyWith(orbitSpeed: speed)); + } + + void toggleSunAutoPlay() { + final nextSunPlaying = !state.isSunPlaying; + emit(state.copyWith(isSunPlaying: nextSunPlaying)); + + _sunTimer?.cancel(); + if (nextSunPlaying) { + _sunTimer = Timer.periodic(const Duration(milliseconds: 130), (_) { + if (isClosed || !state.isSunPlaying) return; + int nextMinutes = state.sunTimeMinutes + 12; + if (nextMinutes > 1260) { + nextMinutes = 330; + } + emit(state.copyWith(sunTimeMinutes: nextMinutes)); + applySunLighting(nextMinutes); + }); + } + } + + void stopSunAutoPlay() { + _sunTimer?.cancel(); + emit(state.copyWith(isSunPlaying: false)); + } + + void setSunTimeMinutes(int minutes) { + emit(state.copyWith(sunTimeMinutes: minutes)); + applySunLighting(minutes); + } + + void setTerrainExaggeration(double value) { + emit(state.copyWith(terrainExaggeration: value)); + applySunLighting(state.sunTimeMinutes, value); + } + + void setCameraTilt(double tilt) { + emit(state.copyWith(cameraTilt: tilt)); + mapController?.setTilt(tilt); + } + + void toggleBuildings() { + final next = !state.showBuildings; + emit(state.copyWith(showBuildings: next)); + mapController?.setLayerVisibility('building-3d', next); + mapController?.setLayerVisibility('building-3d-osm', next); + } + + void toggleContours() { + final next = !state.showContours; + emit(state.copyWith(showContours: next)); + mapController?.setLayerVisibility('tactical-contour-minor', next); + mapController?.setLayerVisibility('tactical-contour-major', next); + mapController?.setLayerVisibility('opentopo-contour-lines', next); + } + + void toggleHillshading() { + final next = !state.showHillshading; + emit(state.copyWith(showHillshading: next)); + mapController?.setLayerVisibility('hillshading', next); + } + + void applySunLighting([int? minutes, double? exaggeration]) { + final m = minutes ?? state.sunTimeMinutes; + final ex = exaggeration ?? state.terrainExaggeration; + final double fraction = ((m - 330) / (1260 - 330)).clamp(0.0, 1.0); + final double sunAzimuth = 75.0 + (fraction * 215.0); + + String shadowColor; + String highlightColor; + String buildingColor; + double opacity = 0.88; + + if (m < 420) { + shadowColor = '#4c1d95'; + highlightColor = '#fed7aa'; + buildingColor = '#fbcfe8'; + opacity = 0.85; + } else if (m < 660) { + shadowColor = '#334155'; + highlightColor = '#ffffff'; + buildingColor = '#fef08a'; + opacity = 0.88; + } else if (m < 840) { + shadowColor = '#1e293b'; + highlightColor = '#ffffff'; + buildingColor = '#f8fafc'; + opacity = 0.90; + } else if (m < 1050) { + shadowColor = '#374151'; + highlightColor = '#ffedd5'; + buildingColor = '#fed7aa'; + opacity = 0.88; + } else if (m < 1170) { + shadowColor = '#3b0764'; + highlightColor = '#ffedd5'; + buildingColor = '#ea580c'; + opacity = 0.92; + } else { + shadowColor = '#020617'; + highlightColor = '#60a5fa'; + buildingColor = '#1e293b'; + opacity = 0.80; + } + + mapController?.updateSunSimulation( + sunAzimuth: sunAzimuth, + shadowColorHex: shadowColor, + highlightColorHex: highlightColor, + buildingColorHex: buildingColor, + buildingOpacity: opacity, + hillshadeExaggeration: ex, + ); + } + + // ── TOURISM & LANDMARKS 3D ─────────────────────────────────── + + void toggleTouristMode() { + final next = !state.isTouristModeEnabled; + emit(state.copyWith(isTouristModeEnabled: next)); + if (next) { + // Switch map to topographical/scenic view with 2.0x 3D terrain + setTerrainExaggeration(2.0); + setCameraTilt(55.0); + if (!state.showHillshading) toggleHillshading(); + } + } + + void flyToLandmark(TouristLandmark landmark) { + emit(state.copyWith( + selectedLandmarkId: landmark.id, + isTouristModeEnabled: true, + )); + + // Ensure 3D terrain & hillshading are active + if (!state.showHillshading) toggleHillshading(); + setTerrainExaggeration(2.0); + + // Smoothly animate camera to the landmark in 3D + mapController?.animateCamera( + CameraUpdate.newCameraPosition( + CameraPosition( + target: landmark.coordinates, + zoom: 14.5, + tilt: 58.0, + bearing: 45.0, + ), + ), + // duration: const Duration(milliseconds: 1600), + ); + } + + void startOrbitAroundLandmark(TouristLandmark landmark) { + flyToLandmark(landmark); + if (!state.isOrbiting) { + toggleOrbit(); + } + } + + void clearSelectedLandmark() { + emit(state.copyWith(clearSelectedLandmark: true)); } // ── VEHICLE CUSTOMIZATION HANDLERS ────────────────────────── @@ -230,7 +446,8 @@ class NavigationCubit extends Cubit { } catch (_) {} await _registerCurrentVehicleIcon(); if (state.myLocation != null) { - _updateCarMarker(_currentDisplayPosition ?? state.myLocation!, _currentDisplayHeading); + _updateCarMarker( + _currentDisplayPosition ?? state.myLocation!, _currentDisplayHeading); } } @@ -242,7 +459,8 @@ class NavigationCubit extends Cubit { } catch (_) {} await _registerCurrentVehicleIcon(); if (state.myLocation != null) { - _updateCarMarker(_currentDisplayPosition ?? state.myLocation!, _currentDisplayHeading); + _updateCarMarker( + _currentDisplayPosition ?? state.myLocation!, _currentDisplayHeading); } } @@ -253,7 +471,8 @@ class NavigationCubit extends Cubit { await prefs.setDouble('siro_vehicle_scale', scale); } catch (_) {} if (state.myLocation != null) { - _updateCarMarker(_currentDisplayPosition ?? state.myLocation!, _currentDisplayHeading); + _updateCarMarker( + _currentDisplayPosition ?? state.myLocation!, _currentDisplayHeading); } } @@ -265,13 +484,15 @@ class NavigationCubit extends Cubit { final newLoc = LatLng(pos.latitude, pos.longitude); final speedKmH = pos.speed * 3.6; final heading = pos.heading; - final alt = (pos.altitude.isNaN || pos.altitude.isInfinite) ? 0.0 : pos.altitude; + final alt = + (pos.altitude.isNaN || pos.altitude.isInfinite) ? 0.0 : pos.altitude; _onNewLocationFix(newLoc, heading, speedKmH, alt); }); } - void _onNewLocationFix(LatLng newLoc, double heading, double speedKmH, double alt) { + void _onNewLocationFix( + LatLng newLoc, double heading, double speedKmH, double alt) { emit(state.copyWith( myLocation: newLoc, altitude: alt, @@ -289,7 +510,9 @@ class NavigationCubit extends Cubit { } // Proactively move camera on first acquired GPS lock (only when style is loaded) - if (!_hasInitiallyCenteredCamera && mapController != null && _isMapStyleLoaded) { + if (!_hasInitiallyCenteredCamera && + mapController != null && + _isMapStyleLoaded) { _hasInitiallyCenteredCamera = true; mapController!.animateCamera( CameraUpdate.newCameraPosition( @@ -328,8 +551,10 @@ class NavigationCubit extends Cubit { // Smooth ease-out curve for natural vehicle movement final double curvedT = 1.0 - (1.0 - t) * (1.0 - t); - final interpPos = _lerpLatLng(_animStartPosition!, _animTargetPosition!, curvedT); - final interpHeading = _lerpAngle(_animStartHeading, _animTargetHeading, curvedT); + final interpPos = + _lerpLatLng(_animStartPosition!, _animTargetPosition!, curvedT); + final interpHeading = + _lerpAngle(_animStartHeading, _animTargetHeading, curvedT); _currentDisplayPosition = interpPos; _currentDisplayHeading = interpHeading; @@ -337,9 +562,13 @@ class NavigationCubit extends Cubit { _updateCarMarker(interpPos, interpHeading); // Smoothly update Google Maps style 3D camera periodically (~every 200ms) or on completion - if (state.isCameraLocked && mapController != null && _isMapStyleLoaded && state.isNavigating) { + if (state.isCameraLocked && + mapController != null && + _isMapStyleLoaded && + state.isNavigating) { if (_animCurrentStep % 5 == 0 || _animCurrentStep == _animTotalSteps) { - _updateNavigationCamera(interpPos, interpHeading, state.speed, state.distanceToNextStep); + _updateNavigationCamera( + interpPos, interpHeading, state.speed, state.distanceToNextStep); } } @@ -352,13 +581,16 @@ class NavigationCubit extends Cubit { // ── GOOGLE MAPS NAVIGATION PERSPECTIVE & DYNAMIC ZOOM ───────── - void _updateNavigationCamera(LatLng pos, double heading, double speedKmH, double distanceToStep) { - if (mapController == null || !_isMapStyleLoaded || !state.isCameraLocked) return; + void _updateNavigationCamera( + LatLng pos, double heading, double speedKmH, double distanceToStep) { + if (mapController == null || !_isMapStyleLoaded || !state.isCameraLocked) + return; // 1. Dynamic speed-adaptive zoom & lookahead calculation double targetZoom; double lookAheadMeters; - const double targetTilt = 45.0; // Fixed 45-degree angle as requested by user + const double targetTilt = + 45.0; // Fixed 45-degree angle as requested by user if (distanceToStep > 0 && distanceToStep < 100.0) { // Approaching turn / maneuver: camera descends down close to show intersection @@ -408,7 +640,8 @@ class NavigationCubit extends Cubit { ); } - LatLng _computeOffset(LatLng from, double distanceMeters, double bearingDegrees) { + LatLng _computeOffset( + LatLng from, double distanceMeters, double bearingDegrees) { const double earthRadius = 6378137.0; // WGS-84 earth radius in meters final double dByR = distanceMeters / earthRadius; final double latRad = from.latitude * (pi / 180.0); @@ -418,10 +651,11 @@ class NavigationCubit extends Cubit { final double targetLatRad = asin( sin(latRad) * cos(dByR) + cos(latRad) * sin(dByR) * cos(bearingRad), ); - final double targetLonRad = lonRad + atan2( - sin(bearingRad) * sin(dByR) * cos(latRad), - cos(dByR) - sin(latRad) * sin(targetLatRad), - ); + final double targetLonRad = lonRad + + atan2( + sin(bearingRad) * sin(dByR) * cos(latRad), + cos(dByR) - sin(latRad) * sin(targetLatRad), + ); return LatLng(targetLatRad * (180.0 / pi), targetLonRad * (180.0 / pi)); } @@ -447,7 +681,8 @@ class NavigationCubit extends Cubit { rotation: bearing, anchor: const Offset(0.5, 0.5), flat: true, - icon: InlqBitmap.fromStyleImage('current_vehicle_icon', size: state.vehicleScale), + icon: InlqBitmap.fromStyleImage('current_vehicle_icon', + size: state.vehicleScale), zIndex: 100, )); } catch (e) { @@ -460,9 +695,12 @@ class NavigationCubit extends Cubit { } void relockCameraToUser() { - print("🎯 [NavigationCubit] relockCameraToUser requested (styleLoaded=$_isMapStyleLoaded, loc=${state.myLocation})"); + print( + "🎯 [NavigationCubit] relockCameraToUser requested (styleLoaded=$_isMapStyleLoaded, loc=${state.myLocation})"); emit(state.copyWith(isCameraLocked: true)); - if (state.myLocation != null && mapController != null && _isMapStyleLoaded) { + if (state.myLocation != null && + mapController != null && + _isMapStyleLoaded) { if (state.isNavigating) { _updateNavigationCamera( _currentDisplayPosition ?? state.myLocation!, @@ -486,7 +724,8 @@ class NavigationCubit extends Cubit { } void setMapTheme(MapThemeType theme) { - print("🎨 [NavigationCubit] Changing map theme to: $theme (resetting _isMapStyleLoaded=false)"); + print( + "🎨 [NavigationCubit] Changing map theme to: $theme (resetting _isMapStyleLoaded=false)"); _isMapStyleLoaded = false; emit(state.copyWith(mapTheme: theme)); } @@ -567,7 +806,9 @@ class NavigationCubit extends Cubit { // ── STEP BOUNDING OVERVIEW ────────────────────────────────── void overviewStepBounding(int stepIndex) { - if (state.currentRoute == null || stepIndex < 0 || stepIndex >= state.routeSteps.length) return; + if (state.currentRoute == null || + stepIndex < 0 || + stepIndex >= state.routeSteps.length) return; final step = state.routeSteps[stepIndex]; final interval = step['interval']; final coords = state.currentRoute!.coordinates; @@ -587,10 +828,14 @@ class NavigationCubit extends Cubit { final stepLat = (step['lat'] as num?)?.toDouble() ?? 0.0; final stepLng = (step['lng'] as num?)?.toDouble() ?? 0.0; - if (stepLat != 0.0 && stepLng != 0.0 && mapController != null && _isMapStyleLoaded) { + if (stepLat != 0.0 && + stepLng != 0.0 && + mapController != null && + _isMapStyleLoaded) { mapController!.animateCamera( CameraUpdate.newCameraPosition( - CameraPosition(target: LatLng(stepLat, stepLng), zoom: 17.5, tilt: 45.0), + CameraPosition( + target: LatLng(stepLat, stepLng), zoom: 17.5, tilt: 45.0), ), ); } @@ -601,9 +846,11 @@ class NavigationCubit extends Cubit { String title = 'وجهة مختارة', String originTitle = 'موقعي الحالي', }) async { - print("🛣️ [NavigationCubit] calculateRouteTo: origin=$originTitle, target=$destination, title=$title, myLocation=${state.myLocation}"); + print( + "🛣️ [NavigationCubit] calculateRouteTo: origin=$originTitle, target=$destination, title=$title, myLocation=${state.myLocation}"); if (state.myLocation == null) { - print("⚠️ [NavigationCubit] Cannot calculate route: current GPS location is null!"); + print( + "⚠️ [NavigationCubit] Cannot calculate route: current GPS location is null!"); return; } emit(state.copyWith( @@ -631,7 +878,8 @@ class NavigationCubit extends Cubit { } final primaryRoute = routes.first; - print("✅ [NavigationCubit] Route calculated successfully: ${routes.length} routes found, primary: dist=${primaryRoute.formattedDistance}, dur=${primaryRoute.formattedDuration}, coordsCount=${primaryRoute.coordinates.length}"); + print( + "✅ [NavigationCubit] Route calculated successfully: ${routes.length} routes found, primary: dist=${primaryRoute.formattedDistance}, dur=${primaryRoute.formattedDuration}, coordsCount=${primaryRoute.coordinates.length}"); final polylines = _createPolylines(routes, 0); // Origin Pin A @@ -655,7 +903,8 @@ class NavigationCubit extends Cubit { ); final updatedMarkers = Set.from(state.markers) - ..removeWhere((m) => m.markerId.value == 'origin_pin' || m.markerId.value == 'dest_pin') + ..removeWhere((m) => + m.markerId.value == 'origin_pin' || m.markerId.value == 'dest_pin') ..add(startMarker) ..add(destMarker); @@ -677,15 +926,22 @@ class NavigationCubit extends Cubit { if (mapController != null && _isMapStyleLoaded) { await mapController!.addMarker(startMarker); await mapController!.addMarker(destMarker); - print("📍 [NavigationCubit] Directly added startMarker & destMarker to native map engine."); + print( + "📍 [NavigationCubit] Directly added startMarker & destMarker to native map engine."); } _fitRouteInView(primaryRoute.coordinates); + } on RouteException catch (e) { + print("❌ [NavigationCubit] RouteException: ${e.message}"); + emit(state.copyWith( + status: NavigationStatus.error, + errorMessage: e.message, + )); } catch (e) { print("❌ [NavigationCubit] Error calculating route: $e"); emit(state.copyWith( status: NavigationStatus.error, - errorMessage: 'حدث خطأ أثناء استدعاء خدمة التوجيه.', + errorMessage: 'حدث خطأ غير متوقع أثناء استدعاء خدمة التوجيه.', )); } } @@ -712,13 +968,15 @@ class NavigationCubit extends Cubit { void startNavigation() { print("🧭 [NavigationCubit] startNavigation triggered!"); if (state.currentRoute == null) { - print("⚠️ [NavigationCubit] startNavigation aborted: currentRoute is null"); + print( + "⚠️ [NavigationCubit] startNavigation aborted: currentRoute is null"); return; } final route = state.currentRoute!; TelemetryTrackingService.instance.initialize(); final steps = route.steps; - print("🧭 [NavigationCubit] Starting navigation along route: ${route.formattedDistance}, ETA ${route.formattedDuration}, ${steps.length} steps"); + print( + "🧭 [NavigationCubit] Starting navigation along route: ${route.formattedDistance}, ETA ${route.formattedDuration}, ${steps.length} steps"); _lastTraveledIndexInFullRoute = 0; _offRouteStartTime = null; @@ -727,11 +985,11 @@ class NavigationCubit extends Cubit { ? (steps[0]['text']?.toString() ?? 'انطلق نحو الوجهة') : 'انطلق نحو الوجهة'; - final nextInst = steps.length > 1 - ? (steps[1]['text']?.toString() ?? '') - : ''; + final nextInst = + steps.length > 1 ? (steps[1]['text']?.toString() ?? '') : ''; - final initialModifier = steps.isNotEmpty ? (steps[0]['sign'] ?? steps[0]['modifier'] ?? 0) : 0; + final initialModifier = + steps.isNotEmpty ? (steps[0]['sign'] ?? steps[0]['modifier'] ?? 0) : 0; emit(state.copyWith( status: NavigationStatus.navigating, @@ -740,13 +998,16 @@ class NavigationCubit extends Cubit { nextInstruction: nextInst, currentManeuverModifier: initialModifier, isCameraLocked: true, - polylines: _createPolylines(state.routes, state.selectedRouteIndex, traveledIndex: 0), + polylines: _createPolylines(state.routes, state.selectedRouteIndex, + traveledIndex: 0), )); ttsService.speak(firstInstruction); // Immediate 3D Heading-Up camera orientation with 45° tilt and lookahead offset - if (state.myLocation != null && mapController != null && _isMapStyleLoaded) { + if (state.myLocation != null && + mapController != null && + _isMapStyleLoaded) { double bearing = state.heading; if (bearing == 0.0 && route.coordinates.length > 1) { bearing = _calculateBearing(route.coordinates[0], route.coordinates[1]); @@ -785,7 +1046,8 @@ class NavigationCubit extends Cubit { _hasAnnouncedEarlyStepIndex = null; final remainingMarkers = Set.from(state.markers) - ..removeWhere((m) => m.markerId.value == 'origin_pin' || m.markerId.value == 'dest_pin'); + ..removeWhere((m) => + m.markerId.value == 'origin_pin' || m.markerId.value == 'dest_pin'); if (mapController != null && _isMapStyleLoaded) { mapController!.removeMarker(const MarkerId('origin_pin')); @@ -805,7 +1067,9 @@ class NavigationCubit extends Cubit { nextInstruction: '', isCameraLocked: true, )); - if (state.myLocation != null && mapController != null && _isMapStyleLoaded) { + if (state.myLocation != null && + mapController != null && + _isMapStyleLoaded) { mapController!.animateCamera( CameraUpdate.newCameraPosition( CameraPosition(target: state.myLocation!, zoom: 16.5, tilt: 0), @@ -814,11 +1078,13 @@ class NavigationCubit extends Cubit { } } - void simulateLocationTick(LatLng pos, {double speed = 60.0, double heading = 0.0, double altitude = 0.0}) { + void simulateLocationTick(LatLng pos, + {double speed = 60.0, double heading = 0.0, double altitude = 0.0}) { _onNewLocationFix(pos, heading, speed, altitude); } - void _processActiveNavigationTick(LatLng pos, double speedKmH, double heading) { + void _processActiveNavigationTick( + LatLng pos, double speedKmH, double heading) { if (state.currentRoute == null || state.routeSteps.isEmpty) return; final route = state.currentRoute!; @@ -864,7 +1130,9 @@ class NavigationCubit extends Cubit { emit(state.copyWith(distanceToNextStep: distToStep)); // Advance voice announcement when approaching turn (150m - 200m) - if (distToStep <= 180.0 && distToStep > 50.0 && _hasAnnouncedEarlyStepIndex != stepIdx) { + if (distToStep <= 180.0 && + distToStep > 50.0 && + _hasAnnouncedEarlyStepIndex != stepIdx) { _hasAnnouncedEarlyStepIndex = stepIdx; final roundDist = ((distToStep / 50).round() * 50).clamp(50, 200); final text = step['text']?.toString() ?? ''; @@ -873,17 +1141,22 @@ class NavigationCubit extends Cubit { } } - final stepEndIdx = (step['interval'] is List && (step['interval'] as List).length >= 2) - ? ((step['interval'] as List)[1] as num).toInt() - : -1; - final hasPassedStep = stepEndIdx > 0 && _lastTraveledIndexInFullRoute >= stepEndIdx; + final stepEndIdx = + (step['interval'] is List && (step['interval'] as List).length >= 2) + ? ((step['interval'] as List)[1] as num).toInt() + : -1; + final hasPassedStep = + stepEndIdx > 0 && _lastTraveledIndexInFullRoute >= stepEndIdx; - if ((distToStep < 35.0 || hasPassedStep) && stepIdx + 1 < steps.length) { + if ((distToStep < 35.0 || hasPassedStep) && + stepIdx + 1 < steps.length) { stepIdx++; _hasAnnouncedEarlyStepIndex = null; final nextStep = steps[stepIdx]; final text = nextStep['text']?.toString() ?? ''; - final upcomingText = stepIdx + 1 < steps.length ? (steps[stepIdx + 1]['text']?.toString() ?? '') : ''; + final upcomingText = stepIdx + 1 < steps.length + ? (steps[stepIdx + 1]['text']?.toString() ?? '') + : ''; final modifier = nextStep['sign'] ?? nextStep['modifier'] ?? 0; emit(state.copyWith( @@ -922,8 +1195,10 @@ class NavigationCubit extends Cubit { if (coords.length < 2) return; // Search window constrained around vehicle's last known route progress - final int startWindow = (_lastTraveledIndexInFullRoute - 3).clamp(0, coords.length - 2); - final int endWindow = (_lastTraveledIndexInFullRoute + 45).clamp(0, coords.length - 1); + final int startWindow = + (_lastTraveledIndexInFullRoute - 3).clamp(0, coords.length - 2); + final int endWindow = + (_lastTraveledIndexInFullRoute + 45).clamp(0, coords.length - 1); double minDistance = double.infinity; int closestSegmentIndex = _lastTraveledIndexInFullRoute; @@ -1035,14 +1310,18 @@ class NavigationCubit extends Cubit { // ── USER SUBMISSIONS: PLACES & HAZARDS (WITH PIN PICKER) ───── void startLocationPicking(String mode) { - final targetLoc = mapController?.cameraPosition?.target ?? state.myLocation ?? const LatLng(31.9539, 35.9106); + final targetLoc = mapController?.cameraPosition?.target ?? + state.myLocation ?? + const LatLng(31.9539, 35.9106); final pickMarker = Marker( markerId: const MarkerId('picker_pin'), position: targetLoc, icon: InlqBitmap.fromStyleImage('dest_icon'), anchor: const Offset(0.5, 1.0), infoWindow: InfoWindow( - title: mode == 'place' ? '📍 موقع المنشأة المحددة' : '⚠️ موقع البلاغ المحدد', + title: mode == 'place' + ? '📍 موقع المنشأة المحددة' + : '⚠️ موقع البلاغ المحدد', ), zIndex: 95, ); @@ -1072,7 +1351,9 @@ class NavigationCubit extends Cubit { icon: InlqBitmap.fromStyleImage('dest_icon'), anchor: const Offset(0.5, 1.0), infoWindow: InfoWindow( - title: state.activePickerMode == 'place' ? '📍 موقع المنشأة المحددة' : '⚠️ موقع البلاغ المحدد', + title: state.activePickerMode == 'place' + ? '📍 موقع المنشأة المحددة' + : '⚠️ موقع البلاغ المحدد', ), zIndex: 95, ); @@ -1107,8 +1388,12 @@ class NavigationCubit extends Cubit { } } - Future submitPlace(String name, String category, {LatLng? position}) async { - final targetPos = position ?? state.pickedLocation ?? mapController?.cameraPosition?.target ?? state.myLocation; + Future submitPlace(String name, String category, + {LatLng? position}) async { + final targetPos = position ?? + state.pickedLocation ?? + mapController?.cameraPosition?.target ?? + state.myLocation; if (targetPos == null) return false; final success = await repository.submitNewPlace( @@ -1187,7 +1472,8 @@ class NavigationCubit extends Cubit { return locationService.calculateDistance(p, LatLng(projLat, projLng)); } - Set _createPolylines(List routes, int activeIndex, {int traveledIndex = 0}) { + Set _createPolylines(List routes, int activeIndex, + {int traveledIndex = 0}) { final Set set = {}; // 1. Render alternative routes first @@ -1234,7 +1520,8 @@ class NavigationCubit extends Cubit { void _fitRouteInView(List coords) { if (coords.isEmpty || mapController == null || !_isMapStyleLoaded) { - print("⚠️ [NavigationCubit] _fitRouteInView deferred/skipped (coordsCount=${coords.length}, mapController=${mapController != null}, styleLoaded=$_isMapStyleLoaded)"); + print( + "⚠️ [NavigationCubit] _fitRouteInView deferred/skipped (coordsCount=${coords.length}, mapController=${mapController != null}, styleLoaded=$_isMapStyleLoaded)"); return; } double minLat = coords.first.latitude; @@ -1249,7 +1536,8 @@ class NavigationCubit extends Cubit { if (c.longitude > maxLng) maxLng = c.longitude; } - print("🎬 [NavigationCubit] _fitRouteInView: bounds SW=($minLat, $minLng), NE=($maxLat, $maxLng)"); + print( + "🎬 [NavigationCubit] _fitRouteInView: bounds SW=($minLat, $minLng), NE=($maxLat, $maxLng)"); mapController!.animateCamera( CameraUpdate.newLatLngBounds( LatLngBounds( @@ -1265,12 +1553,15 @@ class NavigationCubit extends Cubit { } String _calculateArrivalTime(double durationSeconds) { - final arrival = DateTime.now().add(Duration(seconds: durationSeconds.round())); + final arrival = + DateTime.now().add(Duration(seconds: durationSeconds.round())); return DateFormat('hh:mm a').format(arrival); } @override Future close() { + _orbitTimer?.cancel(); + _sunTimer?.cancel(); _movementInterpolationTimer?.cancel(); _positionStreamSub?.cancel(); _connectivitySub?.cancel(); diff --git a/apps/siro_maps/lib/logic/cubits/navigation/navigation_state.dart b/apps/siro_maps/lib/logic/cubits/navigation/navigation_state.dart index 082f97e..d957ade 100644 --- a/apps/siro_maps/lib/logic/cubits/navigation/navigation_state.dart +++ b/apps/siro_maps/lib/logic/cubits/navigation/navigation_state.dart @@ -55,6 +55,17 @@ class NavigationState extends Equatable { final double vehicleScale; final List recentSearches; final bool isSearching; + final bool isOrbiting; + final double orbitSpeed; + final bool isSunPlaying; + final int sunTimeMinutes; + final double terrainExaggeration; + final double cameraTilt; + final bool showBuildings; + final bool showContours; + final bool showHillshading; + final bool isTouristModeEnabled; + final String? selectedLandmarkId; const NavigationState({ this.status = NavigationStatus.initial, @@ -92,6 +103,17 @@ class NavigationState extends Equatable { this.vehicleScale = 1.8, this.recentSearches = const [], this.isSearching = false, + this.isOrbiting = false, + this.orbitSpeed = 1.0, + this.isSunPlaying = false, + this.sunTimeMinutes = 1110, + this.terrainExaggeration = 2.0, + this.cameraTilt = 55.0, + this.showBuildings = true, + this.showContours = true, + this.showHillshading = true, + this.isTouristModeEnabled = false, + this.selectedLandmarkId, }); RouteData? get currentRoute => @@ -166,6 +188,18 @@ class NavigationState extends Equatable { double? vehicleScale, List? recentSearches, bool? isSearching, + bool? isOrbiting, + double? orbitSpeed, + bool? isSunPlaying, + int? sunTimeMinutes, + double? terrainExaggeration, + double? cameraTilt, + bool? showBuildings, + bool? showContours, + bool? showHillshading, + bool? isTouristModeEnabled, + String? selectedLandmarkId, + bool clearSelectedLandmark = false, }) { return NavigationState( status: status ?? this.status, @@ -205,6 +239,17 @@ class NavigationState extends Equatable { vehicleScale: vehicleScale ?? this.vehicleScale, recentSearches: recentSearches ?? this.recentSearches, isSearching: isSearching ?? this.isSearching, + isOrbiting: isOrbiting ?? this.isOrbiting, + orbitSpeed: orbitSpeed ?? this.orbitSpeed, + isSunPlaying: isSunPlaying ?? this.isSunPlaying, + sunTimeMinutes: sunTimeMinutes ?? this.sunTimeMinutes, + terrainExaggeration: terrainExaggeration ?? this.terrainExaggeration, + cameraTilt: cameraTilt ?? this.cameraTilt, + showBuildings: showBuildings ?? this.showBuildings, + showContours: showContours ?? this.showContours, + showHillshading: showHillshading ?? this.showHillshading, + isTouristModeEnabled: isTouristModeEnabled ?? this.isTouristModeEnabled, + selectedLandmarkId: clearSelectedLandmark ? null : (selectedLandmarkId ?? this.selectedLandmarkId), ); } @@ -245,5 +290,16 @@ class NavigationState extends Equatable { vehicleScale, recentSearches, isSearching, + isOrbiting, + orbitSpeed, + isSunPlaying, + sunTimeMinutes, + terrainExaggeration, + cameraTilt, + showBuildings, + showContours, + showHillshading, + isTouristModeEnabled, + selectedLandmarkId, ]; } diff --git a/apps/siro_maps/lib/views/common/siro_toast.dart b/apps/siro_maps/lib/views/common/siro_toast.dart new file mode 100644 index 0000000..f3ead89 --- /dev/null +++ b/apps/siro_maps/lib/views/common/siro_toast.dart @@ -0,0 +1,197 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import '../../core/constants/app_colors.dart'; + +enum SiroToastType { + success, + error, + info, + warning, +} + +class SiroToast { + SiroToast._(); + + static void showSuccess( + BuildContext context, + String message, { + String? title, + Duration duration = const Duration(seconds: 4), + }) { + show( + context, + message: message, + title: title, + type: SiroToastType.success, + duration: duration, + ); + } + + static void showError( + BuildContext context, + String message, { + String? title, + Duration duration = const Duration(seconds: 4), + }) { + show( + context, + message: message, + title: title, + type: SiroToastType.error, + duration: duration, + ); + } + + static void showInfo( + BuildContext context, + String message, { + String? title, + Duration duration = const Duration(seconds: 4), + }) { + show( + context, + message: message, + title: title, + type: SiroToastType.info, + duration: duration, + ); + } + + static void showWarning( + BuildContext context, + String message, { + String? title, + Duration duration = const Duration(seconds: 4), + }) { + show( + context, + message: message, + title: title, + type: SiroToastType.warning, + duration: duration, + ); + } + + static void show( + BuildContext context, { + required String message, + String? title, + SiroToastType type = SiroToastType.info, + Duration duration = const Duration(seconds: 4), + }) { + // Trigger tactile haptic feedback + switch (type) { + case SiroToastType.success: + HapticFeedback.lightImpact(); + break; + case SiroToastType.error: + HapticFeedback.heavyImpact(); + break; + case SiroToastType.warning: + HapticFeedback.mediumImpact(); + break; + case SiroToastType.info: + HapticFeedback.selectionClick(); + break; + } + + Color accentColor; + IconData iconData; + + switch (type) { + case SiroToastType.success: + accentColor = AppColors.tacticalEmerald; + iconData = Icons.check_circle_rounded; + break; + case SiroToastType.error: + accentColor = AppColors.coralDanger; + iconData = Icons.error_rounded; + break; + case SiroToastType.warning: + accentColor = AppColors.sovereignGold; + iconData = Icons.warning_amber_rounded; + break; + case SiroToastType.info: + accentColor = AppColors.appleBlue; + iconData = Icons.info_rounded; + break; + } + + final messenger = ScaffoldMessenger.of(context); + messenger.hideCurrentSnackBar(); + + messenger.showSnackBar( + SnackBar( + behavior: SnackBarBehavior.floating, + elevation: 10, + margin: EdgeInsets.only( + bottom: MediaQuery.of(context).size.height * 0.11, + left: 18, + right: 18, + ), + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(18), + side: BorderSide( + color: accentColor.withValues(alpha: 0.35), + width: 1.2, + ), + ), + backgroundColor: const Color(0xFF1D1D1F).withValues(alpha: 0.95), + duration: duration, + content: Row( + children: [ + Container( + padding: const EdgeInsets.all(7), + decoration: BoxDecoration( + color: accentColor.withValues(alpha: 0.18), + shape: BoxShape.circle, + border: Border.all( + color: accentColor.withValues(alpha: 0.3), + width: 1, + ), + ), + child: Icon( + iconData, + color: accentColor, + size: 18, + ), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (title != null && title.isNotEmpty) + Padding( + padding: const EdgeInsets.only(bottom: 2), + child: Text( + title, + style: TextStyle( + color: accentColor, + fontSize: 12, + fontWeight: FontWeight.w700, + fontFamily: '.SF Pro Text', + ), + ), + ), + Text( + message, + style: const TextStyle( + color: Colors.white, + fontSize: 13, + fontWeight: FontWeight.w500, + height: 1.3, + fontFamily: '.SF Pro Text', + ), + ), + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/apps/siro_maps/lib/views/map/map_view.dart b/apps/siro_maps/lib/views/map/map_view.dart index ec60d4b..ac10340 100644 --- a/apps/siro_maps/lib/views/map/map_view.dart +++ b/apps/siro_maps/lib/views/map/map_view.dart @@ -22,6 +22,11 @@ import 'widgets/add_place_sheet.dart'; import 'widgets/vehicle_customizer_sheet.dart'; import 'widgets/about_awards_sheet.dart'; import 'widgets/cinematic_3d_studio_sheet.dart'; +import 'widgets/siro_drawer_widget.dart'; +import 'widgets/tourist_landmarks_sheet.dart'; +import 'widgets/settings_sheet.dart'; +import 'widgets/system_updates_sheet.dart'; +import '../common/siro_toast.dart'; class MapView extends StatefulWidget { const MapView({super.key}); @@ -31,6 +36,7 @@ class MapView extends StatefulWidget { } class _MapViewState extends State { + final GlobalKey _scaffoldKey = GlobalKey(); final TextEditingController _searchController = TextEditingController(); final FocusNode _searchFocusNode = FocusNode(); bool _isSearchFocused = false; @@ -117,6 +123,36 @@ class _MapViewState extends State { ); } + void _showTouristLandmarks(BuildContext context, NavigationCubit cubit, NavigationState state) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (_) => TouristLandmarksSheet( + cubit: cubit, + state: state, + ), + ); + } + + void _showSettingsSheet(BuildContext context, NavigationCubit cubit) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (_) => SettingsSheet(cubit: cubit), + ); + } + + void _showSystemUpdatesSheet(BuildContext context) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (_) => const SystemUpdatesSheet(), + ); + } + void _showCinematic3DStudio(BuildContext context, NavigationCubit cubit, NavigationState state) { showModalBottomSheet( context: context, @@ -170,14 +206,10 @@ class _MapViewState extends State { position: initialLocation, ); if (mounted && ok) { - messenger.showSnackBar( - const SnackBar( - content: Text( - 'تم إرسال البلاغ بنجاح وتحديث الشبكة التشاركية.', - style: TextStyle(fontSize: 12), - ), - backgroundColor: AppColors.tacticalEmerald, - ), + _showLuxuryNotification( + context, + message: 'تم إرسال البلاغ بنجاح وتحديث الشبكة التشاركية.', + isError: false, ); } }, @@ -196,21 +228,16 @@ class _MapViewState extends State { backgroundColor: Colors.transparent, builder: (_) => AddPlaceSheet( onSubmit: (name, cat) async { - final messenger = ScaffoldMessenger.of(context); final ok = await cubit.submitPlace( name, cat, position: initialLocation, ); if (mounted) { - messenger.showSnackBar( - SnackBar( - content: Text( - ok ? 'تمت إضافة المكان بنجاح! شكراً لمساهمتك.' : 'تعذر حفظ المكان، يرجى المحاولة لاحقاً.', - style: const TextStyle(fontSize: 12), - ), - backgroundColor: ok ? AppColors.tacticalEmerald : AppColors.coralDanger, - ), + _showLuxuryNotification( + context, + message: ok ? 'تمت إضافة المكان بنجاح! شكراً لمساهمتك.' : 'تعذر حفظ المكان، يرجى المحاولة لاحقاً.', + isError: !ok, ); } }, @@ -222,6 +249,18 @@ class _MapViewState extends State { }); } + void _showLuxuryNotification( + BuildContext context, { + required String message, + bool isError = false, + }) { + if (isError) { + SiroToast.showError(context, message); + } else { + SiroToast.showSuccess(context, message); + } + } + void _showPlaceGatesSheet(BuildContext context, NavigationCubit cubit, PlaceModel place) { showModalBottomSheet( context: context, @@ -255,14 +294,10 @@ class _MapViewState extends State { return BlocConsumer( listener: (context, state) { if (state.errorMessage != null) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text( - state.errorMessage!, - style: const TextStyle(fontSize: 12), - ), - backgroundColor: AppColors.coralDanger, - ), + _showLuxuryNotification( + context, + message: state.errorMessage!, + isError: true, ); } @@ -313,8 +348,21 @@ class _MapViewState extends State { valueListenable: PipService.instance.isInPipMode, builder: (context, isInPip, _) { return Scaffold( + key: _scaffoldKey, resizeToAvoidBottomInset: false, backgroundColor: AppColors.canvasLight, + drawer: SiroDrawerWidget( + cubit: cubit, + state: state, + onOpenTouristLandmarks: () => _showTouristLandmarks(context, cubit, state), + onOpen3DStudio: () => _showCinematic3DStudio(context, cubit, state), + onOpenLayers: () => _showLayerSelector(context, cubit, state.mapTheme), + onOpenSettings: () => _showSettingsSheet(context, cubit), + onOpenUpdates: () => _showSystemUpdatesSheet(context), + onOpenAbout: () => _showAboutAwardsSheet(context), + onStartReportHazard: () => cubit.startLocationPicking('hazard'), + onStartAddPlace: () => cubit.startLocationPicking('place'), + ), body: SizedBox.expand( child: Stack( fit: StackFit.expand, @@ -375,7 +423,7 @@ class _MapViewState extends State { _searchController.clear(); cubit.clearSearch(); }, - onMenuTap: () => _showLayerSelector(context, cubit, state.mapTheme), + onMenuTap: () => _scaffoldKey.currentState?.openDrawer(), ), const SizedBox(height: 10), ExplorePanelWidget( @@ -383,6 +431,7 @@ class _MapViewState extends State { _searchController.text = q; cubit.searchImmediately(q); }, + onTouristSelected: () => _showTouristLandmarks(context, cubit, state), ), ], ), @@ -1276,38 +1325,6 @@ class _MapViewState extends State { onTap: () => _showCinematic3DStudio(context, cubit, state), ), const SizedBox(height: 12), - // Layer Selector Button - _buildFloatingCircle( - icon: Icons.layers_rounded, - color: AppColors.textPrimary, - tooltip: 'طبقات الخريطة', - onTap: () => _showLayerSelector(context, cubit, state.mapTheme), - ), - const SizedBox(height: 12), - // Siro Map Platform Architecture & Info Button - _buildFloatingCircle( - icon: Icons.info_outline_rounded, - color: AppColors.appleBlue, - tooltip: 'عن سيرو ماب والمنظومة التقنية', - onTap: () => _showAboutAwardsSheet(context), - ), - const SizedBox(height: 12), - // Add Place Button - _buildFloatingCircle( - icon: Icons.add_location_alt_rounded, - color: AppColors.appleBlue, - tooltip: 'إضافة مكان', - onTap: () => cubit.startLocationPicking('place'), - ), - const SizedBox(height: 12), - // Report Hazard Button - _buildFloatingCircle( - icon: Icons.warning_amber_rounded, - color: AppColors.sovereignGold, - tooltip: 'إبلاغ عن حالة طريق', - onTap: () => cubit.startLocationPicking('hazard'), - ), - const SizedBox(height: 12), // Recenter GPS Button _buildFloatingCircle( icon: Icons.my_location_rounded, @@ -1374,6 +1391,88 @@ class _MapViewState extends State { ), ), + // ── 6c. FLOATING 3D ORBIT STATUS & STOP BUTTON ── + if (!isInPip && state.isOrbiting) + Positioned( + left: 16, + bottom: (state.speed > 3.0) ? 100 : 32, + child: SafeArea( + top: false, + child: Material( + color: Colors.transparent, + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8), + decoration: BoxDecoration( + color: const Color(0xFF1D1D1F).withValues(alpha: 0.94), + borderRadius: BorderRadius.circular(24), + border: Border.all( + color: const Color(0xFFEA580C).withValues(alpha: 0.8), + width: 1.5, + ), + boxShadow: const [ + BoxShadow( + color: Color(0x3D000000), + blurRadius: 16, + offset: Offset(0, 4), + ), + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + InkWell( + onTap: () => cubit.stopOrbit(), + borderRadius: BorderRadius.circular(12), + child: const Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.stop_circle_rounded, + color: AppColors.coralDanger, + size: 18, + ), + SizedBox(width: 6), + Text( + 'إيقاف الدوران 360°', + style: TextStyle( + fontFamily: '.SF Pro Text', + color: Colors.white, + fontSize: 12, + fontWeight: FontWeight.w700, + ), + ), + ], + ), + ), + const SizedBox(width: 10), + Container( + width: 1, + height: 16, + color: Colors.white.withValues(alpha: 0.2), + ), + const SizedBox(width: 8), + GestureDetector( + onTap: () => _showCinematic3DStudio(context, cubit, state), + child: Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: Colors.white.withValues(alpha: 0.15), + shape: BoxShape.circle, + ), + child: const Icon( + Icons.tune_rounded, + color: Colors.white, + size: 14, + ), + ), + ), + ], + ), + ), + ), + ), + ), + // ── 7. LOADING OVERLAY ── if (state.status == NavigationStatus.loading) Container( diff --git a/apps/siro_maps/lib/views/map/widgets/cinematic_3d_studio_sheet.dart b/apps/siro_maps/lib/views/map/widgets/cinematic_3d_studio_sheet.dart index 2e30e68..d5ea70b 100644 --- a/apps/siro_maps/lib/views/map/widgets/cinematic_3d_studio_sheet.dart +++ b/apps/siro_maps/lib/views/map/widgets/cinematic_3d_studio_sheet.dart @@ -1,10 +1,10 @@ -import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../../core/constants/app_colors.dart'; import '../../../../logic/cubits/navigation/navigation_cubit.dart'; import '../../../../logic/cubits/navigation/navigation_state.dart'; -class Cinematic3DStudioSheet extends StatefulWidget { +class Cinematic3DStudioSheet extends StatelessWidget { final NavigationCubit cubit; final NavigationState state; @@ -14,167 +14,6 @@ class Cinematic3DStudioSheet extends StatefulWidget { required this.state, }); - @override - State createState() => _Cinematic3DStudioSheetState(); -} - -class _Cinematic3DStudioSheetState extends State { - // Camera Tilt State - double _tilt = 55.0; - - // Orbit State - bool _isOrbiting = false; - double _orbitSpeed = 1.0; - Timer? _orbitTimer; - - // Sun & Shadow Simulation State - // Range: 330 minutes (05:30 AM) to 1260 minutes (09:00 PM) - int _sunTimeMinutes = 1110; // Default: 18:30 (Golden Hour Sunset) - bool _isSunPlaying = false; - Timer? _sunTimer; - - // Layer Toggles - bool _showBuildings = true; - bool _showContours = true; - bool _showHillshading = true; - - @override - void initState() { - super.initState(); - // Get initial camera tilt if available - final initialPos = widget.cubit.mapController?.cameraPosition; - if (initialPos != null && initialPos.tilt > 0) { - _tilt = initialPos.tilt; - } else { - // Set to 55 degrees for instant 3D perspective - widget.cubit.mapController?.setTilt(55.0); - } - - // Apply initial golden hour lighting - WidgetsBinding.instance.addPostFrameCallback((_) { - _applySunLighting(_sunTimeMinutes); - }); - } - - @override - void dispose() { - _orbitTimer?.cancel(); - _sunTimer?.cancel(); - super.dispose(); - } - - // ── Orbit Logic ── - void _toggleOrbit() { - setState(() { - _isOrbiting = !_isOrbiting; - }); - - _orbitTimer?.cancel(); - if (_isOrbiting) { - _orbitTimer = Timer.periodic(const Duration(milliseconds: 60), (_) { - if (!mounted || !_isOrbiting) return; - widget.cubit.mapController?.orbitStep( - _orbitSpeed, - duration: const Duration(milliseconds: 60), - ); - }); - } - } - - // ── Sun & Shadows Simulation Logic ── - void _toggleSunAutoPlay() { - setState(() { - _isSunPlaying = !_isSunPlaying; - }); - - _sunTimer?.cancel(); - if (_isSunPlaying) { - _sunTimer = Timer.periodic(const Duration(milliseconds: 130), (_) { - if (!mounted || !_isSunPlaying) return; - setState(() { - _sunTimeMinutes += 12; - if (_sunTimeMinutes > 1260) { - _sunTimeMinutes = 330; // Loop back to 05:30 AM - } - }); - _applySunLighting(_sunTimeMinutes); - }); - } - } - - void _onSunSliderChanged(double value) { - setState(() { - _sunTimeMinutes = value.toInt(); - }); - _applySunLighting(_sunTimeMinutes); - } - - void _setPresetTime(int minutes) { - setState(() { - _sunTimeMinutes = minutes; - }); - _applySunLighting(minutes); - } - - void _applySunLighting(int minutes) { - // Fraction of daylight cycle: 0.0 (05:30) to 1.0 (21:00) - final double fraction = ((minutes - 330) / (1260 - 330)).clamp(0.0, 1.0); - - // Azimuth sweeps from 75° (East - Sunrise) to 180° (South - Noon) to 290° (West - Sunset) - final double sunAzimuth = 75.0 + (fraction * 215.0); - - String shadowColor; - String highlightColor; - String buildingColor; - double opacity = 0.88; - - if (minutes < 420) { - // Dawn (05:30 - 07:00) - shadowColor = '#4c1d95'; // Deep violet dawn shadow - highlightColor = '#fed7aa'; // Peach highlight - buildingColor = '#fbcfe8'; // Morning rose tint - opacity = 0.85; - } else if (minutes < 660) { - // Morning (07:00 - 11:00) - shadowColor = '#334155'; - highlightColor = '#ffffff'; - buildingColor = '#fef08a'; // Golden morning sun - opacity = 0.88; - } else if (minutes < 840) { - // Noon (11:00 - 14:00) - shadowColor = '#1e293b'; // Crisp direct shadow - highlightColor = '#ffffff'; - buildingColor = '#f8fafc'; // Crisp bright daylight - opacity = 0.90; - } else if (minutes < 1050) { - // Afternoon (14:00 - 17:30) - shadowColor = '#374151'; - highlightColor = '#ffedd5'; - buildingColor = '#fed7aa'; // Warm afternoon sun - opacity = 0.88; - } else if (minutes < 1170) { - // Sunset / Golden Hour (17:30 - 19:30) - shadowColor = '#3b0764'; // Dramatic deep purple-amber shadow - highlightColor = '#ffedd5'; - buildingColor = '#ea580c'; // Glowing warm sunset orange - opacity = 0.92; - } else { - // Night / Twilight (19:30 - 21:00) - shadowColor = '#020617'; - highlightColor = '#60a5fa'; // Cool blue moonlight - buildingColor = '#1e293b'; // Dark sapphire buildings - opacity = 0.80; - } - - widget.cubit.mapController?.updateSunSimulation( - sunAzimuth: sunAzimuth, - shadowColorHex: shadowColor, - highlightColorHex: highlightColor, - buildingColorHex: buildingColor, - buildingOpacity: opacity, - ); - } - String _formatSunTime(int minutes) { final int hours = minutes ~/ 60; final int mins = minutes % 60; @@ -200,432 +39,475 @@ class _Cinematic3DStudioSheetState extends State { return '$displayHour:$minsStr $period • $label'; } - // ── Tilt Logic ── - void _setTilt(double newTilt) { - setState(() => _tilt = newTilt); - widget.cubit.mapController?.setTilt(newTilt); - } - - // ── Layer Toggles ── - void _toggleBuildings() { - setState(() => _showBuildings = !_showBuildings); - widget.cubit.mapController?.setLayerVisibility('building-3d', _showBuildings); - widget.cubit.mapController?.setLayerVisibility('building-3d-osm', _showBuildings); - } - - void _toggleContours() { - setState(() => _showContours = !_showContours); - widget.cubit.mapController?.setLayerVisibility('tactical-contour-minor', _showContours); - widget.cubit.mapController?.setLayerVisibility('tactical-contour-major', _showContours); - widget.cubit.mapController?.setLayerVisibility('opentopo-contour-lines', _showContours); - } - - void _toggleHillshading() { - setState(() => _showHillshading = !_showHillshading); - widget.cubit.mapController?.setLayerVisibility('hillshading', _showHillshading); - } - @override Widget build(BuildContext context) { - final isSatellite = widget.state.mapTheme == MapThemeType.satellite; - final double fraction = ((_sunTimeMinutes - 330) / (1260 - 330)).clamp(0.0, 1.0); - final double sunAzimuth = 75.0 + (fraction * 215.0); + return BlocBuilder( + bloc: cubit, + builder: (context, currentState) { + final isSatellite = currentState.mapTheme == MapThemeType.satellite; + final double fraction = ((currentState.sunTimeMinutes - 330) / (1260 - 330)).clamp(0.0, 1.0); + final double sunAzimuth = 75.0 + (fraction * 215.0); - return Container( - padding: const EdgeInsets.fromLTRB(20, 16, 20, 36), - decoration: const BoxDecoration( - color: AppColors.pureWhite, - borderRadius: BorderRadius.vertical(top: Radius.circular(28)), - boxShadow: [ - BoxShadow( - color: Color(0x28000000), - blurRadius: 28, - offset: Offset(0, -8), - ), - ], - ), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - // Drag Handle - Center( - child: Container( - width: 42, - height: 4.5, - decoration: BoxDecoration( - color: AppColors.borderGlass, - borderRadius: BorderRadius.circular(3), - ), - ), - ), - const SizedBox(height: 14), - - // Header - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Container( - width: 38, - height: 38, - decoration: BoxDecoration( - gradient: const LinearGradient( - colors: [Color(0xFFEA580C), Color(0xFFF59E0B)], - begin: Alignment.topLeft, - end: Alignment.bottomRight, - ), - borderRadius: BorderRadius.circular(11), - boxShadow: [ - BoxShadow( - color: const Color(0xFFEA580C).withValues(alpha: 0.35), - blurRadius: 10, - ), - ], - ), - child: const Icon(Icons.view_in_ar_rounded, color: Colors.white, size: 22), - ), - const SizedBox(width: 12), - const Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'استوديو التضاريس والسينما 3D', - style: TextStyle( - fontSize: 15.5, - fontWeight: FontWeight.w800, - color: AppColors.textPrimary, - ), - ), - Text( - 'دوران سينمائي • محاكاة حركة الشمس والظلال', - style: TextStyle(fontSize: 11, color: AppColors.textSecondary), - ), - ], - ), - ], - ), - IconButton( - onPressed: () => Navigator.of(context).pop(), - icon: const Icon(Icons.close_rounded, color: AppColors.textMuted), + return Container( + padding: const EdgeInsets.fromLTRB(20, 16, 20, 36), + decoration: const BoxDecoration( + color: AppColors.pureWhite, + borderRadius: BorderRadius.vertical(top: Radius.circular(28)), + boxShadow: [ + BoxShadow( + color: Color(0x28000000), + blurRadius: 28, + offset: Offset(0, -8), ), ], ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // Drag Handle + Center( + child: Container( + width: 42, + height: 4.5, + decoration: BoxDecoration( + color: AppColors.borderGlass, + borderRadius: BorderRadius.circular(3), + ), + ), + ), + const SizedBox(height: 14), - const SizedBox(height: 18), - const Divider(height: 1, color: AppColors.borderSubtle), - const SizedBox(height: 16), + // Header + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Container( + width: 38, + height: 38, + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: [Color(0xFFEA580C), Color(0xFFF59E0B)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(11), + boxShadow: [ + BoxShadow( + color: const Color(0xFFEA580C).withValues(alpha: 0.35), + blurRadius: 10, + ), + ], + ), + child: const Icon(Icons.view_in_ar_rounded, color: Colors.white, size: 22), + ), + const SizedBox(width: 12), + const Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'استوديو التضاريس والسينما 3D', + style: TextStyle( + fontSize: 15.5, + fontWeight: FontWeight.w800, + color: AppColors.textPrimary, + ), + ), + Text( + 'دوران سينمائي • محاكاة حركة الشمس والظلال', + style: TextStyle(fontSize: 11, color: AppColors.textSecondary), + ), + ], + ), + ], + ), + IconButton( + onPressed: () => Navigator.of(context).pop(), + icon: const Icon(Icons.close_rounded, color: AppColors.textMuted), + ), + ], + ), - // ── 1. DAY-TO-NIGHT SUN & SHADOWS SIMULATION (Stationary Location) ── - Container( - padding: const EdgeInsets.all(14), - decoration: BoxDecoration( - color: const Color(0xFF0F172A), - borderRadius: BorderRadius.circular(18), - border: Border.all(color: const Color(0xFF334155)), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + const SizedBox(height: 18), + const Divider(height: 1, color: AppColors.borderSubtle), + const SizedBox(height: 16), + + // ── 1. DAY-TO-NIGHT SUN & SHADOWS SIMULATION ── + Container( + padding: const EdgeInsets.all(14), + decoration: BoxDecoration( + color: const Color(0xFF0F172A), + borderRadius: BorderRadius.circular(18), + border: Border.all(color: const Color(0xFF334155)), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Container( - padding: const EdgeInsets.all(6), - decoration: BoxDecoration( - color: const Color(0xFFEA580C).withValues(alpha: 0.2), - borderRadius: BorderRadius.circular(8), - ), - child: const Icon(Icons.wb_sunny_rounded, color: Color(0xFFFB923C), size: 16), - ), - const SizedBox(width: 8), - const Text( - 'محاكاة حركة الشمس وسقوط الظلال', - style: TextStyle( - fontSize: 13, - fontWeight: FontWeight.w700, - color: Colors.white, - ), - ), - ], - ), - // Auto-Play Toggle Button - InkWell( - onTap: _toggleSunAutoPlay, - borderRadius: BorderRadius.circular(8), - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 5), - decoration: BoxDecoration( - color: _isSunPlaying - ? const Color(0xFFEA580C) - : Colors.white.withValues(alpha: 0.1), - borderRadius: BorderRadius.circular(8), - border: Border.all( - color: _isSunPlaying - ? const Color(0xFFEA580C) - : Colors.white.withValues(alpha: 0.2), - ), - ), - child: Row( - mainAxisSize: MainAxisSize.min, + Row( children: [ - Icon( - _isSunPlaying ? Icons.pause_rounded : Icons.play_arrow_rounded, - size: 14, - color: Colors.white, + Container( + padding: const EdgeInsets.all(6), + decoration: BoxDecoration( + color: const Color(0xFFEA580C).withValues(alpha: 0.2), + borderRadius: BorderRadius.circular(8), + ), + child: const Icon(Icons.wb_sunny_rounded, color: Color(0xFFFB923C), size: 16), ), - const SizedBox(width: 4), - Text( - _isSunPlaying ? 'إيقاف الدورة' : 'دورة تلقائية', - style: const TextStyle( - fontSize: 11, + const SizedBox(width: 8), + const Text( + 'محاكاة حركة الشمس وسقوط الظلال', + style: TextStyle( + fontSize: 13, fontWeight: FontWeight.w700, color: Colors.white, ), ), ], ), - ), - ), - ], - ), - const SizedBox(height: 6), - const Text( - 'المكان ثابت: وحركة الضوء تحاكي زاوية الشمس لرؤية تشكل وظلال المباني والجبال', - style: TextStyle(fontSize: 10.5, color: Color(0xFF94A3B8)), - ), - const SizedBox(height: 12), - - // Current Time Display & Azimuth - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - _formatSunTime(_sunTimeMinutes), - style: const TextStyle( - fontSize: 12.5, - fontWeight: FontWeight.w800, - color: Color(0xFFFDBA74), - ), - ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 7, vertical: 2), - decoration: BoxDecoration( - color: Colors.white.withValues(alpha: 0.08), - borderRadius: BorderRadius.circular(6), - ), - child: Text( - 'زاوية الإسقاط: ${sunAzimuth.toStringAsFixed(0)}°', - style: const TextStyle(fontSize: 10, color: Color(0xFFCBD5E1)), - ), - ), - ], - ), - const SizedBox(height: 6), - - // Slider - SliderTheme( - data: SliderTheme.of(context).copyWith( - activeTrackColor: const Color(0xFFEA580C), - inactiveTrackColor: Colors.white.withValues(alpha: 0.15), - thumbColor: const Color(0xFFFB923C), - overlayColor: const Color(0xFFEA580C).withValues(alpha: 0.2), - trackHeight: 4, - ), - child: Slider( - min: 330.0, - max: 1260.0, - value: _sunTimeMinutes.toDouble(), - onChanged: _onSunSliderChanged, - ), - ), - - // Quick Sun Period Buttons - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - _buildSunPeriodChip('06:00 ص', 'الفجر', 360), - _buildSunPeriodChip('09:00 ص', 'الصباح', 540), - _buildSunPeriodChip('12:00 م', 'الظهيرة', 720), - _buildSunPeriodChip('06:30 م', 'الغروب', 1110), - _buildSunPeriodChip('08:30 م', 'الليل', 1230), - ], - ), - ], - ), - ), - - const SizedBox(height: 16), - - // ── 2. CINEMATIC 360° ORBIT & CAMERA TILT ── - Row( - children: [ - // Orbit Button - Expanded( - child: InkWell( - onTap: _toggleOrbit, - borderRadius: BorderRadius.circular(16), - child: Container( - padding: const EdgeInsets.symmetric(vertical: 13, horizontal: 12), - decoration: BoxDecoration( - color: _isOrbiting - ? AppColors.appleBlue.withValues(alpha: 0.1) - : AppColors.surfaceMuted, - borderRadius: BorderRadius.circular(16), - border: Border.all( - color: _isOrbiting ? AppColors.appleBlue : AppColors.borderSubtle, - width: _isOrbiting ? 2 : 1, - ), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon( - Icons.rotate_right_rounded, - color: _isOrbiting ? AppColors.appleBlue : AppColors.textPrimary, - size: 20, - ), - const SizedBox(width: 8), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - _isOrbiting ? 'الدوران نشط 360°' : 'دوران سينمائي', - style: TextStyle( - fontSize: 12.5, - fontWeight: FontWeight.w700, - color: _isOrbiting ? AppColors.appleBlue : AppColors.textPrimary, + // Auto-Play Toggle Button + InkWell( + onTap: cubit.toggleSunAutoPlay, + borderRadius: BorderRadius.circular(8), + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 5), + decoration: BoxDecoration( + color: currentState.isSunPlaying + ? const Color(0xFFEA580C) + : Colors.white.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: currentState.isSunPlaying + ? const Color(0xFFEA580C) + : Colors.white.withValues(alpha: 0.2), ), ), - Text( - _isOrbiting ? 'انقر للإيقاف' : 'التفاف حول الموقع', - style: const TextStyle(fontSize: 10, color: AppColors.textMuted), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + currentState.isSunPlaying ? Icons.pause_rounded : Icons.play_arrow_rounded, + size: 14, + color: Colors.white, + ), + const SizedBox(width: 4), + Text( + currentState.isSunPlaying ? 'إيقاف الدورة' : 'دورة تلقائية', + style: const TextStyle( + fontSize: 11, + fontWeight: FontWeight.w700, + color: Colors.white, + ), + ), + ], ), - ], + ), ), ], ), - ), - ), - ), - const SizedBox(width: 10), - - // Orbit Speed Selector (When active) - if (_isOrbiting) - Container( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 6), - decoration: BoxDecoration( - color: AppColors.surfaceMuted, - borderRadius: BorderRadius.circular(14), - border: Border.all(color: AppColors.borderSubtle), - ), - child: Row( - children: [ - _buildSpeedChip(0.6, 'بطيء'), - _buildSpeedChip(1.2, 'سلس'), - _buildSpeedChip(2.4, 'سريع'), - ], - ), - ), - ], - ), - - const SizedBox(height: 14), - - // ── 3. CAMERA TILT CONTROLS ── - Container( - padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 12), - decoration: BoxDecoration( - color: AppColors.surfaceMuted, - borderRadius: BorderRadius.circular(16), - border: Border.all(color: AppColors.borderSubtle), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ + const SizedBox(height: 6), const Text( - 'إمالة الكاميرا للأفق (Camera Tilt):', - style: TextStyle( - fontSize: 12.5, - fontWeight: FontWeight.w700, - color: AppColors.textPrimary, + 'المكان ثابت: وحركة الضوء تحاكي زاوية الشمس لرؤية تشكل وظلال المباني والجبال', + style: TextStyle(fontSize: 10.5, color: Color(0xFF94A3B8)), + ), + const SizedBox(height: 12), + + // Current Time Display & Azimuth + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + _formatSunTime(currentState.sunTimeMinutes), + style: const TextStyle( + fontSize: 12.5, + fontWeight: FontWeight.w800, + color: Color(0xFFFDBA74), + ), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 7, vertical: 2), + decoration: BoxDecoration( + color: Colors.white.withValues(alpha: 0.08), + borderRadius: BorderRadius.circular(6), + ), + child: Text( + 'زاوية الإسقاط: ${sunAzimuth.toStringAsFixed(0)}°', + style: const TextStyle(fontSize: 10, color: Color(0xFFCBD5E1)), + ), + ), + ], + ), + const SizedBox(height: 6), + + // Slider + SliderTheme( + data: SliderTheme.of(context).copyWith( + activeTrackColor: const Color(0xFFEA580C), + inactiveTrackColor: Colors.white.withValues(alpha: 0.15), + thumbColor: const Color(0xFFFB923C), + overlayColor: const Color(0xFFEA580C).withValues(alpha: 0.2), + trackHeight: 4, + ), + child: Slider( + min: 330.0, + max: 1260.0, + value: currentState.sunTimeMinutes.toDouble(), + onChanged: (val) => cubit.setSunTimeMinutes(val.toInt()), ), ), - Text( - '${_tilt.toStringAsFixed(0)}°', - style: const TextStyle( - fontSize: 13, - fontWeight: FontWeight.w800, - color: AppColors.appleBlue, - ), + + // Quick Sun Period Buttons + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _buildSunPeriodChip('06:00 ص', 'الفجر', 360, currentState.sunTimeMinutes), + _buildSunPeriodChip('09:00 ص', 'الصباح', 540, currentState.sunTimeMinutes), + _buildSunPeriodChip('12:00 م', 'الظهيرة', 720, currentState.sunTimeMinutes), + _buildSunPeriodChip('06:30 م', 'الغروب', 1110, currentState.sunTimeMinutes), + _buildSunPeriodChip('08:30 م', 'الليل', 1230, currentState.sunTimeMinutes), + ], ), ], ), - const SizedBox(height: 8), - Row( + ), + + const SizedBox(height: 16), + + // ── 2. CINEMATIC 360° ORBIT & SPEED ── + Row( + children: [ + // Orbit Button + Expanded( + child: InkWell( + onTap: cubit.toggleOrbit, + borderRadius: BorderRadius.circular(16), + child: Container( + padding: const EdgeInsets.symmetric(vertical: 13, horizontal: 12), + decoration: BoxDecoration( + color: currentState.isOrbiting + ? AppColors.appleBlue.withValues(alpha: 0.1) + : AppColors.surfaceMuted, + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: currentState.isOrbiting ? AppColors.appleBlue : AppColors.borderSubtle, + width: currentState.isOrbiting ? 2 : 1, + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.rotate_right_rounded, + color: currentState.isOrbiting ? AppColors.appleBlue : AppColors.textPrimary, + size: 20, + ), + const SizedBox(width: 8), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + currentState.isOrbiting ? 'الدوران نشط 360°' : 'دوران سينمائي', + style: TextStyle( + fontSize: 12.5, + fontWeight: FontWeight.w700, + color: currentState.isOrbiting ? AppColors.appleBlue : AppColors.textPrimary, + ), + ), + Text( + currentState.isOrbiting ? 'انقر للإيقاف (يستمر عند إغلاق النافذة)' : 'التفاف حول الموقع', + style: const TextStyle(fontSize: 10, color: AppColors.textMuted), + ), + ], + ), + ], + ), + ), + ), + ), + const SizedBox(width: 10), + + // Orbit Speed Selector (When active) + if (currentState.isOrbiting) + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 6), + decoration: BoxDecoration( + color: AppColors.surfaceMuted, + borderRadius: BorderRadius.circular(14), + border: Border.all(color: AppColors.borderSubtle), + ), + child: Row( + children: [ + _buildSpeedChip(0.6, 'بطيء', currentState.orbitSpeed), + _buildSpeedChip(1.2, 'سلس', currentState.orbitSpeed), + _buildSpeedChip(2.4, 'سريع', currentState.orbitSpeed), + ], + ), + ), + ], + ), + + const SizedBox(height: 14), + + // ── 3. TERRAIN EXAGGERATION (Mountain Relief Multiplier) ── + Container( + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 12), + decoration: BoxDecoration( + color: AppColors.surfaceMuted, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColors.borderSubtle), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - _buildTiltPresetChip(0.0, '2D مسطح (0°)'), - const SizedBox(width: 8), - _buildTiltPresetChip(45.0, '3D كتل (45°)'), - const SizedBox(width: 8), - _buildTiltPresetChip(60.0, 'أفق سينمائي (60°)'), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Row( + children: [ + Icon(Icons.landscape_rounded, size: 18, color: AppColors.sovereignGold), + SizedBox(width: 6), + Text( + 'تضخيم الجبال والتضاريس 3D:', + style: TextStyle( + fontSize: 12.5, + fontWeight: FontWeight.w700, + color: AppColors.textPrimary, + ), + ), + ], + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2), + decoration: BoxDecoration( + color: AppColors.sovereignGold.withValues(alpha: 0.15), + borderRadius: BorderRadius.circular(6), + ), + child: Text( + '${currentState.terrainExaggeration.toStringAsFixed(1)}x', + style: const TextStyle( + fontSize: 12.5, + fontWeight: FontWeight.w800, + color: AppColors.sovereignGold, + ), + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + _buildExaggerationChip(1.0, '1.0x طبيعي', currentState.terrainExaggeration), + const SizedBox(width: 6), + _buildExaggerationChip(1.5, '1.5x متوسط', currentState.terrainExaggeration), + const SizedBox(width: 6), + _buildExaggerationChip(2.0, '2.0x (افتراضي)', currentState.terrainExaggeration), + const SizedBox(width: 6), + _buildExaggerationChip(2.5, '2.5x بارز', currentState.terrainExaggeration), + ], + ), ], ), - ], - ), - ), + ), - const SizedBox(height: 14), + const SizedBox(height: 14), - // ── 4. 3D LAYERS TOGGLES ── - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - _buildFeatureToggle( - title: 'المباني 3D', - icon: Icons.apartment_rounded, - active: _showBuildings, - onTap: _toggleBuildings, + // ── 4. CAMERA TILT CONTROLS ── + Container( + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 12), + decoration: BoxDecoration( + color: AppColors.surfaceMuted, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColors.borderSubtle), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text( + 'إمالة الكاميرا للأفق (Camera Tilt):', + style: TextStyle( + fontSize: 12.5, + fontWeight: FontWeight.w700, + color: AppColors.textPrimary, + ), + ), + Text( + '${currentState.cameraTilt.toStringAsFixed(0)}°', + style: const TextStyle( + fontSize: 13, + fontWeight: FontWeight.w800, + color: AppColors.appleBlue, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + _buildTiltPresetChip(0.0, '2D مسطح (0°)', currentState.cameraTilt), + const SizedBox(width: 8), + _buildTiltPresetChip(45.0, '3D كتل (45°)', currentState.cameraTilt), + const SizedBox(width: 8), + _buildTiltPresetChip(60.0, 'أفق سينمائي (60°)', currentState.cameraTilt), + ], + ), + ], + ), ), - _buildFeatureToggle( - title: 'خطوط الكنتور', - icon: Icons.layers_outlined, - active: _showContours, - onTap: _toggleContours, - ), - _buildFeatureToggle( - title: 'ظلال التضاريس', - icon: Icons.landscape_rounded, - active: _showHillshading, - onTap: _toggleHillshading, - ), - _buildFeatureToggle( - title: 'أقمار صناعية', - icon: Icons.satellite_alt_rounded, - active: isSatellite, - onTap: () { - widget.cubit.setMapTheme( - isSatellite ? MapThemeType.vectorLight : MapThemeType.satellite, - ); - }, + + const SizedBox(height: 14), + + // ── 5. 3D LAYERS TOGGLES ── + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + _buildFeatureToggle( + title: 'المباني 3D', + icon: Icons.apartment_rounded, + active: currentState.showBuildings, + onTap: cubit.toggleBuildings, + ), + _buildFeatureToggle( + title: 'خطوط الكنتور', + icon: Icons.layers_outlined, + active: currentState.showContours, + onTap: cubit.toggleContours, + ), + _buildFeatureToggle( + title: 'ظلال التضاريس', + icon: Icons.terrain_rounded, + active: currentState.showHillshading, + onTap: cubit.toggleHillshading, + ), + _buildFeatureToggle( + title: 'أقمار صناعية', + icon: Icons.satellite_alt_rounded, + active: isSatellite, + onTap: () { + cubit.setMapTheme( + isSatellite ? MapThemeType.vectorLight : MapThemeType.satellite, + ); + }, + ), + ], ), ], ), - ], - ), + ); + }, ); } - Widget _buildSunPeriodChip(String time, String label, int minutes) { - final bool isSelected = (_sunTimeMinutes - minutes).abs() < 40; + Widget _buildSunPeriodChip(String time, String label, int minutes, int currentMinutes) { + final bool isSelected = (currentMinutes - minutes).abs() < 40; return InkWell( - onTap: () => _setPresetTime(minutes), + onTap: () => cubit.setSunTimeMinutes(minutes), borderRadius: BorderRadius.circular(6), child: Container( padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 3), @@ -658,10 +540,10 @@ class _Cinematic3DStudioSheetState extends State { ); } - Widget _buildSpeedChip(double speed, String label) { - final bool isSelected = (_orbitSpeed - speed).abs() < 0.1; + Widget _buildSpeedChip(double speed, String label, double currentSpeed) { + final bool isSelected = (currentSpeed - speed).abs() < 0.1; return InkWell( - onTap: () => setState(() => _orbitSpeed = speed), + onTap: () => cubit.setOrbitSpeed(speed), borderRadius: BorderRadius.circular(8), child: Container( padding: const EdgeInsets.symmetric(horizontal: 7, vertical: 5), @@ -681,11 +563,40 @@ class _Cinematic3DStudioSheetState extends State { ); } - Widget _buildTiltPresetChip(double tiltValue, String label) { - final bool isSelected = (_tilt - tiltValue).abs() < 4.0; + Widget _buildExaggerationChip(double val, String label, double currentVal) { + final bool isSelected = (currentVal - val).abs() < 0.05; return Expanded( child: InkWell( - onTap: () => _setTilt(tiltValue), + onTap: () => cubit.setTerrainExaggeration(val), + borderRadius: BorderRadius.circular(10), + child: Container( + padding: const EdgeInsets.symmetric(vertical: 7), + decoration: BoxDecoration( + color: isSelected ? AppColors.sovereignGold : Colors.white, + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: isSelected ? AppColors.sovereignGold : AppColors.borderSubtle, + ), + ), + child: Text( + label, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 10, + fontWeight: isSelected ? FontWeight.w700 : FontWeight.w600, + color: isSelected ? Colors.white : AppColors.textPrimary, + ), + ), + ), + ), + ); + } + + Widget _buildTiltPresetChip(double tiltValue, String label, double currentTilt) { + final bool isSelected = (currentTilt - tiltValue).abs() < 4.0; + return Expanded( + child: InkWell( + onTap: () => cubit.setCameraTilt(tiltValue), borderRadius: BorderRadius.circular(10), child: Container( padding: const EdgeInsets.symmetric(vertical: 8), diff --git a/apps/siro_maps/lib/views/map/widgets/explore_panel_widget.dart b/apps/siro_maps/lib/views/map/widgets/explore_panel_widget.dart index badc4f8..eeed712 100644 --- a/apps/siro_maps/lib/views/map/widgets/explore_panel_widget.dart +++ b/apps/siro_maps/lib/views/map/widgets/explore_panel_widget.dart @@ -3,10 +3,16 @@ import '../../../../core/constants/app_colors.dart'; class ExplorePanelWidget extends StatelessWidget { final Function(String query) onCategorySelected; + final VoidCallback? onTouristSelected; - const ExplorePanelWidget({super.key, required this.onCategorySelected}); + const ExplorePanelWidget({ + super.key, + required this.onCategorySelected, + this.onTouristSelected, + }); static const List> _categories = [ + {'title': 'معالم سياحية 🏛️', 'query': '__tourist__', 'icon': Icons.travel_explore_rounded, 'isSpecial': true}, {'title': 'مولات', 'query': 'مول', 'icon': Icons.local_mall_rounded}, {'title': 'مستشفيات', 'query': 'مستشفى', 'icon': Icons.local_hospital_rounded}, {'title': 'مطاعم', 'query': 'مطعم', 'icon': Icons.restaurant_rounded}, @@ -28,28 +34,38 @@ class ExplorePanelWidget extends StatelessWidget { separatorBuilder: (_, __) => const SizedBox(width: 8), itemBuilder: (context, index) { final cat = _categories[index]; + final isSpecial = cat['isSpecial'] == true; + return ActionChip( avatar: Icon( cat['icon'] as IconData, size: 16, - color: AppColors.appleBlue, + color: isSpecial ? const Color(0xFFD97706) : AppColors.appleBlue, ), label: Text( cat['title'] as String, - style: const TextStyle( + style: TextStyle( fontSize: 12, - fontWeight: FontWeight.w600, - color: AppColors.textPrimary, + fontWeight: isSpecial ? FontWeight.w700 : FontWeight.w600, + color: isSpecial ? const Color(0xFF92400E) : AppColors.textPrimary, ), ), - backgroundColor: AppColors.pureWhite, - side: const BorderSide(color: AppColors.borderSubtle), + backgroundColor: isSpecial ? const Color(0xFFFEF3C7) : AppColors.pureWhite, + side: BorderSide( + color: isSpecial ? const Color(0xFFFDE68A) : AppColors.borderSubtle, + ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20), ), elevation: 1, shadowColor: Colors.black.withValues(alpha: 0.08), - onPressed: () => onCategorySelected(cat['query'] as String), + onPressed: () { + if (cat['query'] == '__tourist__' && onTouristSelected != null) { + onTouristSelected!(); + } else { + onCategorySelected(cat['query'] as String); + } + }, ); }, ), diff --git a/apps/siro_maps/lib/views/map/widgets/settings_sheet.dart b/apps/siro_maps/lib/views/map/widgets/settings_sheet.dart new file mode 100644 index 0000000..ff01081 --- /dev/null +++ b/apps/siro_maps/lib/views/map/widgets/settings_sheet.dart @@ -0,0 +1,345 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../../../../core/constants/app_colors.dart'; +import '../../../../logic/cubits/navigation/navigation_cubit.dart'; +import '../../common/siro_toast.dart'; + +class SettingsSheet extends StatefulWidget { + final NavigationCubit cubit; + + const SettingsSheet({super.key, required this.cubit}); + + @override + State createState() => _SettingsSheetState(); +} + +class _SettingsSheetState extends State { + bool _avoidTolls = false; + bool _avoidHighways = false; + bool _ecoRouting = true; + bool _autoNightMode = true; + String _unit = 'km'; + String _cacheSize = '42.8 ميغابايت'; + + @override + void initState() { + super.initState(); + _loadPreferences(); + } + + Future _loadPreferences() async { + try { + final prefs = await SharedPreferences.getInstance(); + setState(() { + _avoidTolls = prefs.getBool('siro_pref_avoid_tolls') ?? false; + _avoidHighways = prefs.getBool('siro_pref_avoid_highways') ?? false; + _ecoRouting = prefs.getBool('siro_pref_eco_routing') ?? true; + _autoNightMode = prefs.getBool('siro_pref_auto_night') ?? true; + _unit = prefs.getString('siro_pref_unit') ?? 'km'; + }); + } catch (_) {} + } + + Future _saveBool(String key, bool val) async { + try { + final prefs = await SharedPreferences.getInstance(); + await prefs.setBool(key, val); + } catch (_) {} + } + + Future _clearCache() async { + HapticFeedback.mediumImpact(); + setState(() { + _cacheSize = '0.0 ميغابايت'; + }); + if (mounted) { + SiroToast.showSuccess( + context, + 'تم مسح الذاكرة المؤقتة للخرائط بنجاح.', + title: 'تنظيف الذاكرة', + ); + } + } + + @override + Widget build(BuildContext context) { + return Container( + constraints: BoxConstraints( + maxHeight: MediaQuery.of(context).size.height * 0.85, + ), + decoration: const BoxDecoration( + color: AppColors.pureWhite, + borderRadius: BorderRadius.vertical(top: Radius.circular(28)), + boxShadow: [ + BoxShadow( + color: Color(0x33000000), + blurRadius: 30, + offset: Offset(0, -6), + ), + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Drag handle + Center( + child: Container( + margin: const EdgeInsets.only(top: 12, bottom: 8), + width: 44, + height: 5, + decoration: BoxDecoration( + color: AppColors.borderSubtle, + borderRadius: BorderRadius.circular(3), + ), + ), + ), + + // Header + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: AppColors.surfaceMuted, + borderRadius: BorderRadius.circular(14), + border: Border.all(color: AppColors.borderSubtle), + ), + child: const Icon(Icons.settings_suggest_rounded, + color: AppColors.textPrimary, size: 22), + ), + const SizedBox(width: 14), + const Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'إعدادات المنظومة وتفضيلات الملاحة', + style: TextStyle( + fontSize: 16.5, + fontWeight: FontWeight.w800, + color: AppColors.textPrimary, + fontFamily: '.SF Pro Text', + ), + ), + SizedBox(height: 2), + Text( + 'تخصيص قواعد التوجيه، وحدات القياس، والذاكرة المؤقتة', + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w500, + color: AppColors.textSecondary, + fontFamily: '.SF Pro Text', + ), + ), + ], + ), + ), + IconButton( + icon: const Icon(Icons.close_rounded, + color: AppColors.textMuted), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ), + ), + + const Divider(height: 12, color: AppColors.borderSubtle), + + // Settings Body + Expanded( + child: ListView( + padding: const EdgeInsets.fromLTRB(20, 8, 20, 24), + children: [ + // ── Section 1: تفضيلات التوجيه الذكي ── + _buildSectionHeader( + 'تفضيلات التوجيه والمسارات', Icons.alt_route_rounded), + const SizedBox(height: 8), + _buildSwitchTile( + title: 'المسار الاقتصادي الموفر للوقود', + subtitle: + 'حساب المسارات بناءً على استواء التضاريس لتقليل استهلاك الوقود والانبعاثات', + value: _ecoRouting, + onChanged: (val) { + setState(() => _ecoRouting = val); + _saveBool('siro_pref_eco_routing', val); + }, + ), + _buildSwitchTile( + title: 'تجنب الطرق ذات الرسوم (Tolls)', + subtitle: 'تفضيل الطرق المجانية عند اقتراح المسارات البديلة', + value: _avoidTolls, + onChanged: (val) { + setState(() => _avoidTolls = val); + _saveBool('siro_pref_avoid_tolls', val); + }, + ), + _buildSwitchTile( + title: 'تجنب الطرق السريعة (Highways)', + subtitle: 'اختيار الطرق المحلية والشوارع الحضرية الهادئة', + value: _avoidHighways, + onChanged: (val) { + setState(() => _avoidHighways = val); + _saveBool('siro_pref_avoid_highways', val); + }, + ), + + const SizedBox(height: 20), + + // ── Section 2: العرض والنمط الليلي ── + _buildSectionHeader( + 'العرض والنمط البصري', Icons.palette_rounded), + const SizedBox(height: 8), + _buildSwitchTile( + title: 'التبديل التلقائي للنمط الليلي', + subtitle: + 'تحويل الخريطة لنمط Night / Tactical تلقائياً بعد الغروب', + value: _autoNightMode, + onChanged: (val) { + setState(() => _autoNightMode = val); + _saveBool('siro_pref_auto_night', val); + }, + ), + + const SizedBox(height: 20), + + // ── Section 3: الذاكرة والتخزين المؤقت ── + _buildSectionHeader( + 'الذاكرة وحزم الخرائط', Icons.storage_rounded), + const SizedBox(height: 8), + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColors.surfaceMuted, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColors.borderSubtle), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + 'حجم الذاكرة المؤقتة (Tiles Cache)', + style: TextStyle( + fontSize: 13, + fontWeight: FontWeight.w700, + color: AppColors.textPrimary, + ), + ), + const SizedBox(height: 3), + Text( + _cacheSize, + style: const TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + color: AppColors.appleBlue, + ), + ), + ], + ), + TextButton.icon( + onPressed: _clearCache, + icon: const Icon(Icons.delete_sweep_rounded, + size: 18, color: AppColors.coralDanger), + label: const Text( + 'مسح الذاكرة', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w700, + color: AppColors.coralDanger, + ), + ), + style: TextButton.styleFrom( + backgroundColor: + AppColors.coralDanger.withValues(alpha: 0.1), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10)), + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ); + } + + Widget _buildSectionHeader(String title, IconData icon) { + return Row( + children: [ + Icon(icon, size: 16, color: AppColors.appleBlue), + const SizedBox(width: 8), + Text( + title, + style: const TextStyle( + fontSize: 13, + fontWeight: FontWeight.w800, + color: AppColors.textPrimary, + fontFamily: '.SF Pro Text', + ), + ), + ], + ); + } + + Widget _buildSwitchTile({ + required String title, + required String subtitle, + required bool value, + required ValueChanged onChanged, + }) { + return Container( + margin: const EdgeInsets.only(bottom: 10), + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8), + decoration: BoxDecoration( + color: AppColors.surfaceMuted, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColors.borderSubtle), + ), + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: const TextStyle( + fontSize: 13, + fontWeight: FontWeight.w700, + color: AppColors.textPrimary, + ), + ), + const SizedBox(height: 2), + Text( + subtitle, + style: const TextStyle( + fontSize: 11, + height: 1.3, + color: AppColors.textSecondary, + ), + ), + ], + ), + ), + Switch.adaptive( + value: value, + activeColor: AppColors.appleBlue, + onChanged: (v) { + HapticFeedback.lightImpact(); + onChanged(v); + }, + ), + ], + ), + ); + } +} diff --git a/apps/siro_maps/lib/views/map/widgets/siro_drawer_widget.dart b/apps/siro_maps/lib/views/map/widgets/siro_drawer_widget.dart new file mode 100644 index 0000000..7fe19c2 --- /dev/null +++ b/apps/siro_maps/lib/views/map/widgets/siro_drawer_widget.dart @@ -0,0 +1,389 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import '../../../../core/constants/app_colors.dart'; +import '../../../../logic/cubits/navigation/navigation_cubit.dart'; +import '../../../../logic/cubits/navigation/navigation_state.dart'; + +class SiroDrawerWidget extends StatelessWidget { + final NavigationCubit cubit; + final NavigationState state; + final VoidCallback onOpenTouristLandmarks; + final VoidCallback onOpen3DStudio; + final VoidCallback onOpenLayers; + final VoidCallback onOpenSettings; + final VoidCallback onOpenUpdates; + final VoidCallback onOpenAbout; + final VoidCallback onStartReportHazard; + final VoidCallback onStartAddPlace; + + const SiroDrawerWidget({ + super.key, + required this.cubit, + required this.state, + required this.onOpenTouristLandmarks, + required this.onOpen3DStudio, + required this.onOpenLayers, + required this.onOpenSettings, + required this.onOpenUpdates, + required this.onOpenAbout, + required this.onStartReportHazard, + required this.onStartAddPlace, + }); + + @override + Widget build(BuildContext context) { + return Drawer( + backgroundColor: AppColors.pureWhite, + elevation: 16, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.horizontal(left: Radius.circular(28)), + ), + child: SafeArea( + child: Column( + children: [ + // ── Header: Luxury Siro Maps Identity ── + Container( + padding: const EdgeInsets.fromLTRB(20, 16, 20, 20), + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: [Color(0xFF1D1D1F), Color(0xFF2C2C2E)], + begin: Alignment.topRight, + end: Alignment.bottomLeft, + ), + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(28), + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.15), + blurRadius: 16, + offset: const Offset(0, 4), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColors.sovereignGold.withValues(alpha: 0.15), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: AppColors.sovereignGold.withValues(alpha: 0.4), + ), + ), + child: const Icon( + Icons.explore_rounded, + color: AppColors.sovereignGold, + size: 24, + ), + ), + // Online/Offline Sovereign Badge + Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4), + decoration: BoxDecoration( + color: state.isOnline + ? AppColors.tacticalEmerald.withValues(alpha: 0.2) + : AppColors.sovereignGold.withValues(alpha: 0.2), + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: state.isOnline + ? AppColors.tacticalEmerald.withValues(alpha: 0.4) + : AppColors.sovereignGold.withValues(alpha: 0.4), + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 6, + height: 6, + decoration: BoxDecoration( + color: state.isOnline ? AppColors.tacticalEmerald : AppColors.sovereignGold, + shape: BoxShape.circle, + ), + ), + const SizedBox(width: 6), + Text( + state.isOnline ? 'سحابي متصل' : 'توجيه سيادي محلي', + style: TextStyle( + fontSize: 10.5, + fontWeight: FontWeight.w700, + color: state.isOnline ? AppColors.tacticalEmerald : AppColors.sovereignGold, + fontFamily: '.SF Pro Text', + ), + ), + ], + ), + ), + ], + ), + const SizedBox(height: 14), + const Text( + 'سيرو ماب • Siro Maps', + style: TextStyle( + color: Colors.white, + fontSize: 19, + fontWeight: FontWeight.w800, + fontFamily: '.SF Pro Text', + letterSpacing: -0.3, + ), + ), + const SizedBox(height: 3), + const Text( + 'منظومة الملاحة السيادية والاستوديو ثلاثي الأبعاد', + style: TextStyle( + color: Color(0xFF98989D), + fontSize: 11.5, + fontWeight: FontWeight.w500, + fontFamily: '.SF Pro Text', + ), + ), + const SizedBox(height: 10), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), + decoration: BoxDecoration( + color: Colors.white.withValues(alpha: 0.08), + borderRadius: BorderRadius.circular(8), + ), + child: const Text( + '🛡️ استضافة ذاتية 100% • حماية الهوامش الربحية', + style: TextStyle( + color: AppColors.sovereignGold, + fontSize: 10, + fontWeight: FontWeight.w700, + fontFamily: '.SF Pro Text', + ), + ), + ), + ], + ), + ), + + // ── Drawer Menu Items ── + Expanded( + child: ListView( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + children: [ + // ── Section 1: السياحة والاستكشاف 3D ── + _buildSectionTitle('السياحة والاستكشاف السينمائي'), + _buildDrawerTile( + icon: Icons.travel_explore_rounded, + color: const Color(0xFFD97706), + title: 'الخريطة والمعالم السياحية 3D', + subtitle: 'عجائب الأردن، المعالم الأثرية والمحميات', + onTap: () { + Navigator.of(context).pop(); + onOpenTouristLandmarks(); + }, + ), + _buildDrawerTile( + icon: Icons.view_in_ar_rounded, + color: const Color(0xFFEA580C), + title: 'استوديو التضاريس والسينما 3D', + subtitle: 'محاكاة الشمس، تضخيم الجبال، والدوران', + onTap: () { + Navigator.of(context).pop(); + onOpen3DStudio(); + }, + ), + _buildDrawerTile( + icon: Icons.layers_rounded, + color: AppColors.appleBlue, + title: 'طبقات الخريطة والأنماط', + subtitle: 'النمط التكتيكي، الأقمار الصناعية، والطبوغرافي', + onTap: () { + Navigator.of(context).pop(); + onOpenLayers(); + }, + ), + + const SizedBox(height: 12), + const Divider(height: 1, color: AppColors.borderSubtle), + const SizedBox(height: 8), + + // ── Section 2: مجتمع الطرق ── + _buildSectionTitle('المجتمع وحالة الطرق'), + _buildDrawerTile( + icon: Icons.warning_amber_rounded, + color: AppColors.coralDanger, + title: 'إبلاغ عن حالة طريق / مخاطر', + subtitle: 'حوادث، إغلاقات، وأعمال صيانة لحظية', + onTap: () { + Navigator.of(context).pop(); + onStartReportHazard(); + }, + ), + _buildDrawerTile( + icon: Icons.add_location_alt_rounded, + color: AppColors.appleBlue, + title: 'إضافة معلم أو منشأة جديدة', + subtitle: 'تثبيت موقع أو نشاط تجاري على الخريطة', + onTap: () { + Navigator.of(context).pop(); + onStartAddPlace(); + }, + ), + + const SizedBox(height: 12), + const Divider(height: 1, color: AppColors.borderSubtle), + const SizedBox(height: 8), + + // ── Section 3: الإعدادات والتحديثات ── + _buildSectionTitle('المنظومة والتحديثات'), + _buildDrawerTile( + icon: Icons.settings_suggest_rounded, + color: AppColors.textPrimary, + title: 'إعدادات المنظومة والملاحة', + subtitle: 'تفضيلات التوجيه، الرسوم، والذاكرة المؤقتة', + onTap: () { + Navigator.of(context).pop(); + onOpenSettings(); + }, + ), + _buildDrawerTile( + icon: Icons.system_update_alt_rounded, + color: AppColors.tacticalEmerald, + title: 'التحقق من تحديثات الخرائط', + subtitle: 'حزم البلاطات وقواعد بيانات التوجيه', + onTap: () { + Navigator.of(context).pop(); + onOpenUpdates(); + }, + ), + _buildDrawerTile( + icon: Icons.info_outline_rounded, + color: AppColors.appleBlue, + title: 'عن سيرو ماب والجوائز العالمية', + subtitle: 'البنية التحتية، الوفورات الاقتصادية، والتراخيص', + onTap: () { + Navigator.of(context).pop(); + onOpenAbout(); + }, + ), + ], + ), + ), + + // ── Footer: Version & Technical Footprint ── + Container( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12), + decoration: const BoxDecoration( + border: Border(top: BorderSide(color: AppColors.borderSubtle)), + ), + child: const Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Siro Maps Platform v1.2.0', + style: TextStyle( + fontSize: 10.5, + fontWeight: FontWeight.w600, + color: AppColors.textMuted, + fontFamily: '.SF Pro Text', + ), + ), + Text( + 'Sovereignty Architecture', + style: TextStyle( + fontSize: 10.5, + fontWeight: FontWeight.w700, + color: AppColors.sovereignGold, + fontFamily: '.SF Pro Text', + ), + ), + ], + ), + ), + ], + ), + ), + ); + } + + Widget _buildSectionTitle(String title) { + return Padding( + padding: const EdgeInsets.fromLTRB(8, 10, 8, 6), + child: Text( + title, + style: const TextStyle( + fontSize: 11, + fontWeight: FontWeight.w800, + color: AppColors.textMuted, + fontFamily: '.SF Pro Text', + letterSpacing: -0.2, + ), + ), + ); + } + + Widget _buildDrawerTile({ + required IconData icon, + required Color color, + required String title, + required String subtitle, + required VoidCallback onTap, + }) { + return Container( + margin: const EdgeInsets.only(bottom: 6), + child: InkWell( + onTap: () { + HapticFeedback.lightImpact(); + onTap(); + }, + borderRadius: BorderRadius.circular(16), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 8), + child: Row( + children: [ + Container( + width: 38, + height: 38, + decoration: BoxDecoration( + color: color.withValues(alpha: 0.12), + borderRadius: BorderRadius.circular(12), + border: Border.all(color: color.withValues(alpha: 0.25), width: 0.8), + ), + child: Icon(icon, color: color, size: 20), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: const TextStyle( + fontSize: 13, + fontWeight: FontWeight.w700, + color: AppColors.textPrimary, + fontFamily: '.SF Pro Text', + ), + ), + const SizedBox(height: 2), + Text( + subtitle, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 10.5, + color: AppColors.textSecondary, + fontFamily: '.SF Pro Text', + ), + ), + ], + ), + ), + const Icon(Icons.arrow_forward_ios_rounded, size: 12, color: AppColors.textMuted), + ], + ), + ), + ), + ); + } +} diff --git a/apps/siro_maps/lib/views/map/widgets/system_updates_sheet.dart b/apps/siro_maps/lib/views/map/widgets/system_updates_sheet.dart new file mode 100644 index 0000000..48b80f1 --- /dev/null +++ b/apps/siro_maps/lib/views/map/widgets/system_updates_sheet.dart @@ -0,0 +1,277 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import '../../../../core/constants/app_colors.dart'; +import '../../common/siro_toast.dart'; + +class SystemUpdatesSheet extends StatefulWidget { + const SystemUpdatesSheet({super.key}); + + @override + State createState() => _SystemUpdatesSheetState(); +} + +class _SystemUpdatesSheetState extends State { + bool _isChecking = false; + String _lastChecked = 'منذ دقيقة واحدة'; + bool _isUpToDate = true; + + Future _checkForUpdates() async { + setState(() => _isChecking = true); + HapticFeedback.lightImpact(); + + await Future.delayed(const Duration(milliseconds: 1400)); + + if (mounted) { + setState(() { + _isChecking = false; + _lastChecked = 'الآن'; + _isUpToDate = true; + }); + + SiroToast.showSuccess( + context, + 'حزم الخرائط وقواعد بيانات التوجيه السيادية محدثة بالكامل لأحدث إصدار.', + title: 'المنظومة محدثة', + ); + } + } + + @override + Widget build(BuildContext context) { + return Container( + constraints: BoxConstraints( + maxHeight: MediaQuery.of(context).size.height * 0.75, + ), + decoration: const BoxDecoration( + color: AppColors.pureWhite, + borderRadius: BorderRadius.vertical(top: Radius.circular(28)), + boxShadow: [ + BoxShadow( + color: Color(0x33000000), + blurRadius: 30, + offset: Offset(0, -6), + ), + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Drag Handle + Center( + child: Container( + margin: const EdgeInsets.only(top: 12, bottom: 8), + width: 44, + height: 5, + decoration: BoxDecoration( + color: AppColors.borderSubtle, + borderRadius: BorderRadius.circular(3), + ), + ), + ), + + // Header + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: AppColors.tacticalEmerald.withValues(alpha: 0.12), + borderRadius: BorderRadius.circular(14), + border: Border.all( + color: + AppColors.tacticalEmerald.withValues(alpha: 0.3)), + ), + child: const Icon(Icons.system_update_alt_rounded, + color: AppColors.tacticalEmerald, size: 22), + ), + const SizedBox(width: 14), + const Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'تحديثات المنظومة وحزم الخرائط', + style: TextStyle( + fontSize: 16.5, + fontWeight: FontWeight.w800, + color: AppColors.textPrimary, + fontFamily: '.SF Pro Text', + ), + ), + SizedBox(height: 2), + Text( + 'متابعة حزم الخرائط غير المتصلة ومحركات التوجيه', + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w500, + color: AppColors.textSecondary, + fontFamily: '.SF Pro Text', + ), + ), + ], + ), + ), + IconButton( + icon: const Icon(Icons.close_rounded, + color: AppColors.textMuted), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ), + ), + + const Divider(height: 12, color: AppColors.borderSubtle), + + // Updates Body + Padding( + padding: const EdgeInsets.fromLTRB(20, 8, 20, 24), + child: Column( + children: [ + // Status Box + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColors.surfaceMuted, + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: _isUpToDate + ? AppColors.tacticalEmerald.withValues(alpha: 0.3) + : AppColors.sovereignGold.withValues(alpha: 0.3), + ), + ), + child: Column( + children: [ + Row( + children: [ + Icon( + _isUpToDate + ? Icons.check_circle_rounded + : Icons.info_outline_rounded, + color: _isUpToDate + ? AppColors.tacticalEmerald + : AppColors.sovereignGold, + size: 26, + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + _isUpToDate + ? 'الخرائط والبيانات محدثة بالكامل' + : 'تحديث جديد متوفر', + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w800, + color: AppColors.textPrimary, + ), + ), + const SizedBox(height: 2), + Text( + 'آخر فحص: $_lastChecked', + style: const TextStyle( + fontSize: 11, + color: AppColors.textMuted, + ), + ), + ], + ), + ), + ], + ), + const SizedBox(height: 14), + const Divider(height: 1, color: AppColors.borderSubtle), + const SizedBox(height: 12), + _buildPackageRow( + 'حزمة البلاطات الموجهة (Jordan Vector Tiles)', + 'v2026.09 (أحدث إصدار)'), + const SizedBox(height: 8), + _buildPackageRow( + 'محرك التوجيه السيادي (GraphHopper Graph)', + 'v0.13.0 - مُحسَّن ومفهرس'), + const SizedBox(height: 8), + _buildPackageRow( + 'بيانات الارتفاعات والتضاريس 3D (DEM & Contours)', + 'نشط ومحمّل بالذاكرة'), + ], + ), + ), + + const SizedBox(height: 20), + + // Check Button + SizedBox( + width: double.infinity, + height: 50, + child: ElevatedButton.icon( + onPressed: _isChecking ? null : _checkForUpdates, + icon: _isChecking + ? const SizedBox( + width: 18, + height: 18, + child: CircularProgressIndicator( + strokeWidth: 2, color: Colors.white), + ) + : const Icon(Icons.refresh_rounded, + size: 20, color: Colors.white), + label: Text( + _isChecking + ? 'جاري التحقق من السيرفر...' + : 'البحث عن تحديثات الآن', + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + color: Colors.white, + ), + ), + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.appleBlue, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16)), + elevation: 0, + ), + ), + ), + ], + ), + ), + ], + ), + ); + } + + Widget _buildPackageRow(String name, String status) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text( + name, + style: const TextStyle( + fontSize: 11.5, + fontWeight: FontWeight.w600, + color: AppColors.textSecondary), + ), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 7, vertical: 3), + decoration: BoxDecoration( + color: AppColors.tacticalEmerald.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(6), + ), + child: Text( + status, + style: const TextStyle( + fontSize: 10, + fontWeight: FontWeight.w700, + color: AppColors.tacticalEmerald), + ), + ), + ], + ); + } +} diff --git a/apps/siro_maps/lib/views/map/widgets/tourist_landmarks_sheet.dart b/apps/siro_maps/lib/views/map/widgets/tourist_landmarks_sheet.dart new file mode 100644 index 0000000..fb56461 --- /dev/null +++ b/apps/siro_maps/lib/views/map/widgets/tourist_landmarks_sheet.dart @@ -0,0 +1,521 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:maplibre_gl/maplibre_gl.dart'; + +import '../../../../core/constants/app_colors.dart'; +import '../../../../data/models/tourist_landmark_model.dart'; +import '../../../../logic/cubits/navigation/navigation_cubit.dart'; +import '../../../../logic/cubits/navigation/navigation_state.dart'; +import '../../common/siro_toast.dart'; + +class TouristLandmarksSheet extends StatefulWidget { + final NavigationCubit cubit; + final NavigationState state; + + const TouristLandmarksSheet({ + super.key, + required this.cubit, + required this.state, + }); + + @override + State createState() => _TouristLandmarksSheetState(); +} + +class _TouristLandmarksSheetState extends State { + String _selectedCategory = 'all'; + String _searchQuery = ''; + final TextEditingController _searchController = TextEditingController(); + + final List> _categories = const [ + {'key': 'all', 'label': 'الكل 🌍'}, + {'key': 'heritage', 'label': 'تراث وعجائب 🏛️'}, + {'key': 'nature', 'label': 'طبيعة ومحميات 🌲'}, + {'key': 'adventure', 'label': 'مغامرة وتخييم ⛺'}, + {'key': 'religious', 'label': 'ديني وتاريخي ⛪'}, + {'key': 'coastal', 'label': 'شواطئ وبحر ⛵'}, + ]; + + @override + void dispose() { + _searchController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final myLoc = widget.state.myLocation; + final landmarks = TouristLandmark.curatedJordanLandmarks.where((lm) { + final matchesCategory = + _selectedCategory == 'all' || lm.category == _selectedCategory; + final matchesSearch = _searchQuery.isEmpty || + lm.nameAr.contains(_searchQuery) || + lm.nameEn.toLowerCase().contains(_searchQuery.toLowerCase()) || + lm.tag.contains(_searchQuery); + return matchesCategory && matchesSearch; + }).toList(); + + return Container( + constraints: BoxConstraints( + maxHeight: MediaQuery.of(context).size.height * 0.85, + ), + decoration: const BoxDecoration( + color: AppColors.pureWhite, + borderRadius: BorderRadius.vertical(top: Radius.circular(28)), + boxShadow: [ + BoxShadow( + color: Color(0x33000000), + blurRadius: 30, + offset: Offset(0, -6), + ), + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // ── Sheet Drag Handle ── + Center( + child: Container( + margin: const EdgeInsets.only(top: 12, bottom: 8), + width: 44, + height: 5, + decoration: BoxDecoration( + color: AppColors.borderSubtle, + borderRadius: BorderRadius.circular(3), + ), + ), + ), + + // ── Header Title & Sovereignty Badge ── + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + child: Row( + children: [ + Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: [Color(0xFFD97706), Color(0xFFEA580C)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(14), + boxShadow: [ + BoxShadow( + color: const Color(0xFFD97706).withValues(alpha: 0.3), + blurRadius: 10, + offset: const Offset(0, 3), + ), + ], + ), + child: const Icon(Icons.travel_explore_rounded, + color: Colors.white, size: 22), + ), + const SizedBox(width: 14), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + 'الخريطة والمعالم السياحية 3D', + style: TextStyle( + fontSize: 17, + fontWeight: FontWeight.w800, + color: AppColors.textPrimary, + fontFamily: '.SF Pro Text', + ), + ), + const SizedBox(height: 2), + Text( + 'استكشاف سينمائي ثلاثي الأبعاد لأعظم المعالم الأثرية والطبيعية', + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w500, + color: AppColors.textSecondary, + fontFamily: '.SF Pro Text', + ), + ), + ], + ), + ), + IconButton( + icon: const Icon(Icons.close_rounded, + color: AppColors.textMuted), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ), + ), + + // ── Search Field ── + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 6), + child: Container( + decoration: BoxDecoration( + color: AppColors.surfaceMuted, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: AppColors.borderSubtle), + ), + child: TextField( + controller: _searchController, + onChanged: (val) { + setState(() { + _searchQuery = val.trim(); + }); + }, + decoration: InputDecoration( + hintText: 'ابحث عن معلم، موقع أثري، أو محمية طبيعية...', + hintStyle: const TextStyle( + fontSize: 12.5, + color: AppColors.textMuted, + fontFamily: '.SF Pro Text', + ), + prefixIcon: const Icon(Icons.search_rounded, + color: AppColors.textMuted, size: 20), + suffixIcon: _searchQuery.isNotEmpty + ? IconButton( + icon: const Icon(Icons.clear_rounded, + color: AppColors.textMuted, size: 18), + onPressed: () { + _searchController.clear(); + setState(() { + _searchQuery = ''; + }); + }, + ) + : null, + border: InputBorder.none, + contentPadding: + const EdgeInsets.symmetric(horizontal: 14, vertical: 12), + ), + ), + ), + ), + + // ── Filter Categories Chips ── + SingleChildScrollView( + scrollDirection: Axis.horizontal, + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 6), + child: Row( + children: _categories.map((cat) { + final isSelected = _selectedCategory == cat['key']; + return Padding( + padding: const EdgeInsets.only(left: 8), + child: FilterChip( + selected: isSelected, + showCheckmark: false, + label: Text( + cat['label']!, + style: TextStyle( + fontSize: 12, + fontWeight: + isSelected ? FontWeight.w700 : FontWeight.w600, + color: + isSelected ? Colors.white : AppColors.textPrimary, + fontFamily: '.SF Pro Text', + ), + ), + backgroundColor: AppColors.surfaceMuted, + selectedColor: const Color(0xFFD97706), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + side: BorderSide( + color: isSelected + ? const Color(0xFFD97706) + : AppColors.borderSubtle, + width: 1, + ), + ), + padding: + const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + onSelected: (_) { + HapticFeedback.selectionClick(); + setState(() { + _selectedCategory = cat['key']!; + }); + }, + ), + ); + }).toList(), + ), + ), + + const Divider(height: 12, color: AppColors.borderSubtle), + + // ── Landmarks List ── + Expanded( + child: landmarks.isEmpty + ? Center( + child: Padding( + padding: const EdgeInsets.all(24), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.travel_explore_rounded, + size: 48, + color: + AppColors.textMuted.withValues(alpha: 0.5)), + const SizedBox(height: 10), + const Text( + 'لا توجد معالم مطابقة للبحث', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + color: AppColors.textPrimary, + ), + ), + const SizedBox(height: 4), + const Text( + 'جرب البحث باسم معلم آخر أو تغيير التصنيف المختار', + style: TextStyle( + fontSize: 12, color: AppColors.textMuted), + ), + ], + ), + ), + ) + : ListView.separated( + padding: const EdgeInsets.fromLTRB(20, 8, 20, 24), + itemCount: landmarks.length, + separatorBuilder: (_, __) => const SizedBox(height: 14), + itemBuilder: (context, index) { + final lm = landmarks[index]; + double? distKm; + if (myLoc != null) { + distKm = widget.cubit.locationService.calculateDistance( + myLoc, + lm.coordinates, + ) / + 1000.0; + } + + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColors.pureWhite, + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: lm.accentColor.withValues(alpha: 0.25), + width: 1.2, + ), + boxShadow: const [ + BoxShadow( + color: Color(0x0C000000), + blurRadius: 12, + offset: Offset(0, 4), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header: Icon + Title + Tag + Altitude + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 44, + height: 44, + decoration: BoxDecoration( + color: + lm.accentColor.withValues(alpha: 0.12), + borderRadius: BorderRadius.circular(14), + border: Border.all( + color: + lm.accentColor.withValues(alpha: 0.3), + ), + ), + child: Icon(lm.iconData, + color: lm.accentColor, size: 22), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text( + lm.nameAr, + style: const TextStyle( + fontSize: 14.5, + fontWeight: FontWeight.w800, + color: AppColors.textPrimary, + fontFamily: '.SF Pro Text', + ), + ), + const SizedBox(height: 3), + Row( + children: [ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 7, vertical: 2), + decoration: BoxDecoration( + color: lm.accentColor + .withValues(alpha: 0.1), + borderRadius: + BorderRadius.circular(6), + ), + child: Text( + lm.tag, + style: TextStyle( + fontSize: 10, + fontWeight: FontWeight.w700, + color: lm.accentColor, + ), + ), + ), + if (distKm != null) ...[ + const SizedBox(width: 6), + Text( + '• ${distKm.toStringAsFixed(1)} كم', + style: const TextStyle( + fontSize: 11, + fontWeight: FontWeight.w600, + color: AppColors.textSecondary, + ), + ), + ], + ], + ), + ], + ), + ), + // Elevation Badge + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: AppColors.surfaceMuted, + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: AppColors.borderSubtle), + ), + child: Column( + children: [ + const Icon(Icons.terrain_rounded, + size: 14, + color: AppColors.textSecondary), + const SizedBox(height: 2), + Text( + '${lm.elevationMeters.toInt()} م', + style: const TextStyle( + fontSize: 10.5, + fontWeight: FontWeight.w700, + color: AppColors.textPrimary, + ), + ), + ], + ), + ), + ], + ), + + const SizedBox(height: 10), + + // Description + Text( + lm.description, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 12, + height: 1.4, + color: AppColors.textSecondary, + fontFamily: '.SF Pro Text', + ), + ), + + const SizedBox(height: 14), + + // Action Buttons: [ 🎬 استعراض سينمائي 3D ] + [ 🧭 توجيه المسار ] + Row( + children: [ + // 3D Cinematic Fly-to & Orbit Button + Expanded( + child: SizedBox( + height: 42, + child: OutlinedButton.icon( + onPressed: () { + Navigator.of(context).pop(); + widget.cubit + .startOrbitAroundLandmark(lm); + SiroToast.showInfo( + context, + 'جاري الطيران السينمائي 3D نحو ${lm.nameAr}', + title: 'استعراض المعلم 360°', + ); + }, + icon: const Icon(Icons.view_in_ar_rounded, + size: 16), + label: const Text( + 'استعراض 3D ودوران', + style: TextStyle( + fontSize: 11.5, + fontWeight: FontWeight.w700, + ), + ), + style: OutlinedButton.styleFrom( + foregroundColor: lm.accentColor, + side: BorderSide( + color: lm.accentColor, width: 1.2), + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(12), + ), + ), + ), + ), + ), + const SizedBox(width: 10), + // Route & Navigate Button + Expanded( + child: SizedBox( + height: 42, + child: ElevatedButton.icon( + onPressed: () { + Navigator.of(context).pop(); + widget.cubit.calculateRouteTo( + lm.coordinates, + title: lm.nameAr, + ); + SiroToast.showSuccess( + context, + 'جاري تخطيط المسار السيادي إلى ${lm.nameAr}', + title: 'تخطيط المسار', + ); + }, + icon: const Icon(Icons.directions_rounded, + size: 16, color: Colors.white), + label: const Text( + 'توجيه المسار', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w700, + color: Colors.white, + ), + ), + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.appleBlue, + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(12), + ), + ), + ), + ), + ), + ], + ), + ], + ), + ); + }, + ), + ), + ], + ), + ); + } +} diff --git a/apps/siro_maps/pubspec.lock b/apps/siro_maps/pubspec.lock index 9593e05..45dc2e7 100644 --- a/apps/siro_maps/pubspec.lock +++ b/apps/siro_maps/pubspec.lock @@ -627,10 +627,10 @@ packages: dependency: transitive description: name: matcher - sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 + sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6" url: "https://pub.dev" source: hosted - version: "0.12.19" + version: "0.12.18" material_color_utilities: dependency: transitive description: @@ -643,10 +643,10 @@ packages: dependency: transitive description: name: meta - sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.17.0" mime: dependency: transitive description: @@ -1032,10 +1032,10 @@ packages: dependency: transitive description: name: test_api - sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" + sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636" url: "https://pub.dev" source: hosted - version: "0.7.11" + version: "0.7.9" typed_data: dependency: transitive description: diff --git a/apps/web/public/style-3d-terrain.json b/apps/web/public/style-3d-terrain.json index 81b92de..348ebb3 100644 --- a/apps/web/public/style-3d-terrain.json +++ b/apps/web/public/style-3d-terrain.json @@ -583,6 +583,58 @@ "fill-extrusion-opacity": 0.88 } }, + { + "id": "osm-buildings-ground-shadows", + "type": "fill", + "source": "local-osm-polygons", + "source-layer": "planet_osm_polygon", + "filter": [ + "has", + "building" + ], + "minzoom": 13.5, + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "#0f172a", + "fill-opacity": 0.45, + "fill-translate": [12, 4], + "fill-translate-anchor": "map" + } + }, + { + "id": "osm-buildings-extrusion", + "type": "fill-extrusion", + "source": "local-osm-polygons", + "source-layer": "planet_osm_polygon", + "filter": [ + "has", + "building" + ], + "minzoom": 13.5, + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-extrusion-color": [ + "interpolate", + ["linear"], + ["coalesce", ["get", "height"], 12], + 0, "#e7e5e4", + 30, "#d6d3d1", + 70, "#a8a29e", + 150, "#78716c" + ], + "fill-extrusion-height": [ + "coalesce", + ["get", "height"], + ["*", ["coalesce", ["get", "building:levels"], 2.5], 3.5] + ], + "fill-extrusion-base": 0, + "fill-extrusion-opacity": 0.88 + } + }, { "id": "mountain-peaks-points", "type": "circle", diff --git a/apps/web/src/components/LandmarkCard.tsx b/apps/web/src/components/LandmarkCard.tsx index a0b7a41..0165f3c 100644 --- a/apps/web/src/components/LandmarkCard.tsx +++ b/apps/web/src/components/LandmarkCard.tsx @@ -1,5 +1,5 @@ -import React from 'react'; -import { Navigation, MapPin, ShieldCheck, Clock, Ticket, Car, Volume2, Edit3, X } from 'lucide-react'; +import React, { useState, useEffect, useRef } from 'react'; +import { Navigation, MapPin, ShieldCheck, Clock, Ticket, Car, Volume2, Edit3, X, Play, Pause, RotateCcw, VolumeX, Sparkles } from 'lucide-react'; export interface HeritageLandmarkData { id: number; @@ -20,6 +20,13 @@ export interface HeritageLandmarkData { parking?: { lat: number; lng: number }; ticket_office?: { lat: number; lng: number }; }; + site_polygon?: [number, number][]; + admission?: { + is_ticketed?: boolean; + jordan_pass_included?: boolean; + currency?: string; + rates?: Array<{ visitor_type: string; amount: number; currency?: string }>; + }; } interface LandmarkCardProps { @@ -35,7 +42,149 @@ export const LandmarkCard: React.FC = ({ onNavigateToGate, onOpenContribute, }) => { - const [activeImageIdx, setActiveImageIdx] = React.useState(0); + const [activeImageIdx, setActiveImageIdx] = useState(0); + + // Audio Storytelling State & Handlers + const [isPlaying, setIsPlaying] = useState(false); + const [playbackSeconds, setPlaybackSeconds] = useState(0); + const [audioSpeed, setAudioSpeed] = useState(1.0); + const audioElemRef = useRef(null); + const timerRef = useRef(null); + + // Stop audio on unmount or landmark change + useEffect(() => { + return () => { + if (audioElemRef.current) { + audioElemRef.current.pause(); + audioElemRef.current = null; + } + if ('speechSynthesis' in window) { + window.speechSynthesis.cancel(); + } + if (timerRef.current) { + clearInterval(timerRef.current); + } + setIsPlaying(false); + setPlaybackSeconds(0); + }; + }, [landmark.id]); + + const handleToggleAudio = () => { + if (isPlaying) { + if (audioElemRef.current) { + audioElemRef.current.pause(); + } + if ('speechSynthesis' in window) { + window.speechSynthesis.cancel(); + } + if (timerRef.current) clearInterval(timerRef.current); + setIsPlaying(false); + return; + } + + setIsPlaying(true); + + if (landmark.audio_url) { + if (!audioElemRef.current) { + audioElemRef.current = new Audio(landmark.audio_url); + audioElemRef.current.playbackRate = audioSpeed; + audioElemRef.current.onended = () => { + setIsPlaying(false); + setPlaybackSeconds(0); + if (timerRef.current) clearInterval(timerRef.current); + }; + audioElemRef.current.onerror = () => { + startSpeechSynthesisFallback(); + }; + } + audioElemRef.current.play().catch(() => { + startSpeechSynthesisFallback(); + }); + + timerRef.current = setInterval(() => { + if (audioElemRef.current) { + setPlaybackSeconds(Math.round(audioElemRef.current.currentTime)); + } + }, 500); + } else { + startSpeechSynthesisFallback(); + } + }; + + const startSpeechSynthesisFallback = () => { + if (!('speechSynthesis' in window) || !landmark.narrative_ar) { + setIsPlaying(false); + return; + } + + window.speechSynthesis.cancel(); + + // Clean narration text: strip english terms in brackets and format pauses for documentary flow + const cleanText = landmark.narrative_ar + .replace(/\([A-Za-z0-9\s_\-./]+\)/g, '') // remove (English labels) that confuse Arabic TTS + .replace(/[•*#]/g, '') + .replace(/\s+/g, ' ') + .trim(); + + const utterance = new SpeechSynthesisUtterance(cleanText); + utterance.lang = 'ar-JO'; + // Calm, dignified documentary cadence (0.88x sounds far more regal and authoritative than 1.0x) + utterance.rate = audioSpeed * 0.88; + utterance.pitch = 0.95; // Slightly deeper resonance, eliminating tinny treble artifacts + + const voices = window.speechSynthesis.getVoices(); + // Prioritize natural, enhanced, or studio Arabic voices + const arVoices = voices.filter(v => v.lang.toLowerCase().startsWith('ar')); + + // Sort to prioritize premium/enhanced/natural/online voices + const premiumArVoice = arVoices.sort((a, b) => { + const getScore = (voice: SpeechSynthesisVoice) => { + const name = voice.name.toLowerCase(); + if (voice.lang.toLowerCase() === 'ar-jo') return 100; + if (name.includes('natural') || name.includes('online')) return 90; + if (name.includes('enhanced') || name.includes('premium')) return 80; + if (name.includes('siri') || name.includes('google')) return 70; + if (name.includes('maged') || name.includes('tarik') || name.includes('shakir')) return 60; + return 10; + }; + return getScore(b) - getScore(a); + })[0]; + + if (premiumArVoice) { + utterance.voice = premiumArVoice; + utterance.lang = premiumArVoice.lang; + } + + utterance.onend = () => { + setIsPlaying(false); + setPlaybackSeconds(0); + if (timerRef.current) clearInterval(timerRef.current); + }; + + utterance.onerror = () => { + setIsPlaying(false); + if (timerRef.current) clearInterval(timerRef.current); + }; + + window.speechSynthesis.speak(utterance); + + const startTimestamp = Date.now(); + timerRef.current = setInterval(() => { + setPlaybackSeconds(Math.round((Date.now() - startTimestamp) / 1000)); + }, 500); + }; + + const handleRestartAudio = () => { + if (audioElemRef.current) { + audioElemRef.current.currentTime = 0; + } + if ('speechSynthesis' in window) { + window.speechSynthesis.cancel(); + } + setPlaybackSeconds(0); + setIsPlaying(false); + if (timerRef.current) clearInterval(timerRef.current); + }; const gate = landmark.coordinates.access_gate; const parking = landmark.coordinates.parking; @@ -340,30 +489,151 @@ export const LandmarkCard: React.FC = ({ {/* Narrative & Story Section */}
{landmark.narrative_ar && ( -
-
- سردية المكان في 60 ثانية +
+ {/* Player Header */} +
+
+
+ 🎙️ +
+
+
+ السردية الصوتية التراثية +
+
+ {landmark.audio_url ? 'تسجيل وثائقي صوتي معتمد' : 'سرد صوتي تفاعلي حي (60 ثانية)'} +
+
+
+ + {/* Equalizer Animation Bars when playing */} + {isPlaying && ( +
+ {[14, 18, 10, 16, 8, 15, 12].map((h, i) => ( +
+ ))} +
+ )}
+ + {/* Audio Controls Bar */} +
+
+ + + + + + {Math.floor(playbackSeconds / 60)}:{(playbackSeconds % 60).toString().padStart(2, '0')} + +
+ + {/* Speed Controller */} +
+ {[1.0, 1.25].map(s => ( + + ))} +
+
+ + {/* Narrative Transcript Text */}

{landmark.narrative_ar} @@ -453,9 +723,75 @@ export const LandmarkCard: React.FC = ({

)} + + {ticket && ( +
+
+ كشك التذاكر ونقطة الاستقبال +
+
+ {ticket.lat.toFixed(4)}, {ticket.lng.toFixed(4)} +
+
+ )}
+ {/* Admission Pricing & Jordan Pass Status */} + {landmark.admission && ( +
+
+ 🎫 رسوم الدخول الرسمية + {landmark.admission.jordan_pass_included && ( + + مشمول بـ Jordan Pass 🇯🇴 + + )} +
+ {landmark.admission.rates && landmark.admission.rates.map((r: any, idx: number) => ( +
+ {r.visitor_type === 'jordanian' ? 'المواطن الأردني والمقيم' : (r.visitor_type === 'foreign_visitor' ? 'الزائر الأجنبي' : 'تذكرة الدخول')} + {r.amount === 0 ? 'دخول مجاني' : `${r.amount} ${r.currency || 'JOD'}`} +
+ ))} +
+ )} + + {/* Cultural Trail Name Badge */} + {landmark.metadata?.trail_name && ( +
+ 🗺️ مسار ثقافي: {landmark.metadata.trail_name} +
+ )} + {/* Primary Action Buttons */}
+ )} +
+ + {/* Category Filter Chips Bar */} +
+ {[ + { id: 'all', label: 'الكل' }, + { id: 'heritage', label: '🏛️ أثرية' }, + { id: 'nature', label: '🏜️ أودية' }, + { id: 'urban', label: '🏙️ مدن 3D' }, + { id: 'peaks', label: '🏔️ قمم' } + ].map((cat) => { + const isActive = activeCategory === cat.id; + return ( + + ); + })} +
+ {/* Dynamic User Location Card (if located) */} {userLocation && ( )} - {JORDAN_3D_VIEWPOINTS.map((vp) => { - const isSelected = activeViewpoint === vp.id; - return ( -
-
- {vp.desc} -
- - ); - })} + {vp.desc} + + + ); + }) + )} {/* Solar & Shadow Simulation Floating Control Bar */} @@ -1311,7 +1673,13 @@ export function Terrain3DView() { {formatSunTime(sunTimeMinutes)} - • موقع الشمس: {Math.round(76 + ((sunTimeMinutes - 330) / (1260 - 330)) * 204)}° | اتجاه الظل: {Math.round((76 + ((sunTimeMinutes - 330) / (1260 - 330)) * 204 + 180) % 360)}° {((76 + ((sunTimeMinutes - 330) / (1260 - 330)) * 204 + 180) % 360) > 180 && ((76 + ((sunTimeMinutes - 330) / (1260 - 330)) * 204 + 180) % 360) < 320 ? '(غرباً ⬅️)' : ((76 + ((sunTimeMinutes - 330) / (1260 - 330)) * 204 + 180) % 360) <= 45 || ((76 + ((sunTimeMinutes - 330) / (1260 - 330)) * 204 + 180) % 360) >= 320 ? '(شمالاً ⬆️)' : '(شرقاً ➡️)'} + {sunTimeMinutes >= 1170 ? ( + • مصدر الضوء: قمر مكتمل (142° SE) | زاوية الظل: 322° NW (ظلال ليلية داكنة) + ) : ( + + • موقع الشمس: {Math.round(76 + ((sunTimeMinutes - 330) / (1260 - 330)) * 204)}° | اتجاه الظل: {Math.round((76 + ((sunTimeMinutes - 330) / (1260 - 330)) * 204 + 180) % 360)}° + + )} @@ -1365,15 +1733,152 @@ export function Terrain3DView() { accentColor: '#f59e0b', cursor: 'pointer', borderRadius: 3, - background: 'linear-gradient(90deg, #7c3aed 0%, #38bdf8 30%, #f59e0b 60%, #ea580c 80%, #0f172a 100%)' + background: 'linear-gradient(90deg, #7c3aed 0%, #38bdf8 30%, #f59e0b 60%, #ea580c 80%, #030712 100%)' }} /> - 09:00 م + 09:00 م (ليلي 🌙) + {/* Floating Layer Filter Modal / Drawer */} + {showFilterDrawer && ( +
+
+
+ + فلاتر طبقات الخريطة والتضاريس +
+ +
+ +
+ {/* 1. 3D Buildings */} +
+
+ + المباني ثلاثية الأبعاد (3D Extrusion) +
+ +
+ + {/* 2. Building Shadows */} +
+
+ + ظلال المباني الواقعية (ليلاً ونهاراً) +
+ +
+ + {/* 3. Contours */} +
+
+ + خطوط الكنتور الطبوغرافية +
+ +
+ + {/* 4. Hillshading */} +
+
+ + التظليل التضاريسي الميداني (Hillshading) +
+ +
+ + {/* 5. Road Network */} +
+
+ + شبكة الطرق والشرايين الرئيسية +
+ +
+ + {/* 6. City Labels */} +
+
+ + تسميات المدن والبلدات الوطنية +
+ +
+ + {/* 7. Mountain Peaks */} +
+
+ + القمم الجبلية ومناسيب الارتفاع +
+ +
+
+
+ )} + {/* Bottom Floating Control Dock (Lighting, Exaggeration, Orbit, Layers) */}
+ {/* Advanced Layer Filters Button */} + + +
+ {/* Lighting Simulation Segmented Controller */}
@@ -1413,7 +1947,7 @@ export function Terrain3DView() { { id: 'dawn', label: 'الفجر', icon: }, { id: 'noon', label: 'الظهيرة', icon: }, { id: 'sunset', label: 'الغروب', icon: }, - { id: 'night', label: 'الليل', icon: } + { id: 'night', label: 'الليل (مع الظلال)', icon: } ].map((l) => (
@@ -1483,7 +2020,7 @@ export function Terrain3DView() { value={pitch} onChange={(e) => handlePitchChange(parseInt(e.target.value))} style={{ - width: 80, + width: 75, accentColor: '#38bdf8', cursor: 'pointer' }} @@ -1520,7 +2057,7 @@ export function Terrain3DView() {
- {/* Drape Mode & Layers Toggles */} + {/* Drape Mode & Direct Quick Toggles */}
+ +
+ {/* Map Layer Switcher: Tourism, Satellite, 3D Terrain */} +
+ {[ + { key: 'tourism', label: '🏛️ سياحية' }, + { key: 'satellite', label: '🛰️ ستالايت' }, + { key: 'terrain', label: '⛰️ تضاريس' } + ].map(l => { + const active = mapStyleKey === l.key; + return ( + + ); + })} +
+ {/* Country Tabs */}
{[ @@ -747,7 +1097,7 @@ export const TourismMapView: React.FC = () => { return (