| <!DOCTYPE html> |
| <html> |
| <head> |
| |
| <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> |
| <script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js"></script> |
| <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> |
| <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script> |
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css"/> |
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css"/> |
| <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css"/> |
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.min.css"/> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/> |
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/> |
| |
| <meta name="viewport" content="width=device-width, |
| initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> |
| <style> |
| #map_586d77e36a4adda7dbd132e909873016 { |
| position: relative; |
| width: 100.0%; |
| height: 100.0%; |
| left: 0.0%; |
| top: 0.0%; |
| } |
| .leaflet-container { font-size: 1rem; } |
| </style> |
|
|
| <style>html, body { |
| width: 100%; |
| height: 100%; |
| margin: 0; |
| padding: 0; |
| } |
| </style> |
|
|
| <style>#map { |
| position:absolute; |
| top:0; |
| bottom:0; |
| right:0; |
| left:0; |
| } |
| </style> |
|
|
| <script> |
| L_NO_TOUCH = false; |
| L_DISABLE_3D = false; |
| </script> |
|
|
| |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-locatecontrol/0.66.2/L.Control.Locate.min.js"></script> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet-locatecontrol/0.66.2/L.Control.Locate.min.css"/> |
| </head> |
| <body> |
| |
| |
| <div class="desktop-stats-toggle" style=" |
| position:fixed; |
| top:10px; |
| right:10px; |
| z-index:10000; |
| direction:rtl; |
| font-family:Arial, sans-serif; |
| "> |
| <button id="btn_stats_7" onclick=" |
| var panel = document.getElementById('stats_7'); |
| var btn = document.getElementById('btn_stats_7'); |
| if (panel.style.display === 'none') { |
| panel.style.display = 'block'; |
| btn.innerText = 'إخفاء'; |
| } else { |
| panel.style.display = 'none'; |
| btn.innerText = 'عرض الملخص'; |
| } |
| " style=" |
| background:rgba(255,255,255,0.92); |
| border:none; |
| border-radius:14px; |
| padding:10px 14px; |
| font-size:14px; |
| font-weight:bold; |
| cursor:pointer; |
| box-shadow:0 2px 10px rgba(0,0,0,0.18); |
| ">إخفاء</button> |
| </div> |
|
|
| <div id="stats_7" class="stats-panel mobile-map-sheet" style=" |
| display:block; |
| position:fixed; |
| top:10px; |
| right:58px; |
| width:320px; |
| max-height:85vh; |
| overflow-y:auto; |
| background:rgba(255,255,255,0.86); |
| backdrop-filter:blur(4px); |
| -webkit-backdrop-filter:blur(4px); |
| border-radius:22px; |
| padding:18px 18px 16px 18px; |
| z-index:9999; |
| direction:rtl; |
| font-family:Arial, sans-serif; |
| box-shadow:0 8px 28px rgba(0,0,0,0.16); |
| line-height:1.9; |
| color:#222; |
| "> |
| <div style=" |
| font-size:18px; |
| font-weight:800; |
| text-align:center; |
| margin-bottom:10px; |
| ">صالح عبدالله صالح الدخيل - 1</div> |
|
|
| <div style="font-size:15px;"> |
| <div><b>عدد المواقع:</b> 0</div> |
| <div><b>عدد الحارات:</b> 1</div> |
| </div> |
|
|
| |
| <div style=" |
| margin-top:12px; |
| padding:12px; |
| border-radius:14px; |
| background:#fee2e2; |
| color:#991b1b; |
| text-align:center; |
| font-weight:700; |
| line-height:1.8; |
| "> |
| لا توجد إحداثيات لجميع العينات (1).<br> |
| يرجى الرجوع للنظام اللوحي. |
| </div> |
| |
|
|
| <div style="margin-top:10px;"> |
| <div style="font-weight:bold;">أكثر الحارات:</div> |
| <div style="padding-right:8px;"><div>• المدينة الصناعية الأولى بالأحساء: 1</div></div> |
| </div> |
|
|
| <div style=" |
| margin-top:14px; |
| padding-top:10px; |
| border-top:1px solid rgba(0,0,0,0.08); |
| "> |
| <a href="report_07_صالح_عبدالله_صالح_الدخيل.pdf" target="_blank" style=" |
| display:block; |
| text-align:center; |
| background:#16a34a; |
| color:#fff; |
| text-decoration:none; |
| padding:10px 12px; |
| border-radius:12px; |
| font-weight:700; |
| margin-bottom:8px; |
| ">تصدير بيانات هذه الخريطة PDF</a> |
|
|
| <a href="report_07_صالح_عبدالله_صالح_الدخيل.xlsx" target="_blank" style=" |
| display:block; |
| text-align:center; |
| background:#2563eb; |
| color:#fff; |
| text-decoration:none; |
| padding:10px 12px; |
| border-radius:12px; |
| font-weight:700; |
| margin-bottom:8px; |
| ">تصدير بيانات هذه الخريطة Excel</a> |
|
|
| |
|
|
| <div style="font-weight:bold; margin-bottom:6px;">تلوين حسب الحارة</div> |
| <div style="font-size:13px;"> |
| |
| <div style="display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px;"> |
| <div style="display:flex;align-items:center;gap:8px;"> |
| <span style=" |
| width:12px; |
| height:12px; |
| border-radius:50%; |
| display:inline-block; |
| background:beige; |
| border:1px solid rgba(0,0,0,0.15); |
| "></span> |
| <span>المدينة الصناعية الأولى بالأحساء</span> |
| </div> |
| <span style="color:#555;">(1)</span> |
| </div> |
| |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="desktop-search-toggle" style=" |
| position:fixed; |
| top:10px; |
| left:10px; |
| z-index:10000; |
| direction:rtl; |
| font-family:Arial, sans-serif; |
| "> |
| <button id="searchToggleBtn" onclick="toggleSearchBox()" style=" |
| background:rgba(255,255,255,0.92); |
| border:none; |
| border-radius:14px; |
| padding:10px 14px; |
| font-size:14px; |
| font-weight:bold; |
| cursor:pointer; |
| box-shadow:0 2px 10px rgba(0,0,0,0.18); |
| ">إخفاء البحث</button> |
| </div> |
|
|
| <div id="searchBoxPanel" class="search-panel mobile-map-sheet" style=" |
| position:fixed; |
| top:55px; |
| left:10px; |
| z-index:10000; |
| direction:rtl; |
| font-family:Arial, sans-serif; |
| background:rgba(255,255,255,0.92); |
| padding:10px; |
| border-radius:16px; |
| box-shadow:0 2px 10px rgba(0,0,0,0.18); |
| width:300px; |
| "> |
| <input id="mapSearchInput" type="text" placeholder="ابحث عن اسم المنشأة..." |
| style=" |
| width:100%; |
| box-sizing:border-box; |
| padding:10px; |
| border-radius:12px; |
| border:1px solid #ccc; |
| font-size:14px; |
| direction:rtl; |
| "> |
|
|
| <div id="searchCount" style=" |
| margin-top:7px; |
| font-size:13px; |
| color:#334155; |
| line-height:1.7; |
| "> |
| اكتب للبحث داخل نقاط الخريطة |
| </div> |
|
|
| <button onclick="clearMapSearch()" style=" |
| margin-top:8px; |
| width:100%; |
| padding:8px; |
| border:none; |
| border-radius:10px; |
| background:#f3f4f6; |
| cursor:pointer; |
| font-weight:bold; |
| "> |
| مسح البحث |
| </button> |
| </div> |
|
|
| <div id="mobileMapToolbar"> |
| <button id="mobileSearchBtn" type="button" onclick="toggleMobileSheet('search')"> |
| بحث |
| </button> |
| <button id="mobileStatsBtn" type="button" onclick="toggleMobileSheet('stats')"> |
| الملخص والتصدير |
| </button> |
| </div> |
|
|
| <style> |
| #mobileMapToolbar { |
| display:none; |
| } |
| |
| @media (max-width: 768px) { |
| .desktop-search-toggle, |
| .desktop-stats-toggle { |
| display:none !important; |
| } |
| |
| .mobile-map-sheet { |
| display:none !important; |
| position:fixed !important; |
| top:auto !important; |
| right:10px !important; |
| left:10px !important; |
| bottom:72px !important; |
| width:auto !important; |
| max-height:68vh !important; |
| overflow-y:auto !important; |
| box-sizing:border-box !important; |
| z-index:10900 !important; |
| border-radius:20px !important; |
| background:rgba(255,255,255,0.96) !important; |
| box-shadow:0 8px 30px rgba(0,0,0,0.28) !important; |
| } |
| |
| .mobile-map-sheet.mobile-open { |
| display:block !important; |
| } |
| |
| #searchBoxPanel { |
| padding:14px !important; |
| } |
| |
| #mobileMapToolbar { |
| display:flex; |
| position:fixed; |
| right:10px; |
| left:10px; |
| bottom:10px; |
| z-index:11000; |
| gap:8px; |
| padding:7px; |
| direction:rtl; |
| border-radius:16px; |
| background:rgba(255,255,255,0.94); |
| box-shadow:0 4px 18px rgba(0,0,0,0.24); |
| font-family:Arial, sans-serif; |
| } |
| |
| #mobileMapToolbar button { |
| flex:1; |
| min-height:44px; |
| border:0; |
| border-radius:12px; |
| background:#f1f5f9; |
| color:#1f2937; |
| font-size:14px; |
| font-weight:700; |
| cursor:pointer; |
| } |
| |
| #mobileMapToolbar button.active { |
| background:#2563eb; |
| color:#fff; |
| } |
| |
| .map-footer { |
| display:none !important; |
| } |
| |
| .leaflet-control-zoom, |
| .leaflet-control-locate { |
| margin-bottom:82px !important; |
| } |
| } |
| </style> |
|
|
| <script> |
| window.searchableMarkers = []; |
| window.noCoordinateSamples = [{"name": "شركة تطوير للمباني شركة شخص واحد"}]; |
| |
| function closeMobileSheets() { |
| var searchPanel = document.getElementById("searchBoxPanel"); |
| var statsPanel = document.querySelector(".stats-panel"); |
| var searchBtn = document.getElementById("mobileSearchBtn"); |
| var statsBtn = document.getElementById("mobileStatsBtn"); |
| |
| if (searchPanel) searchPanel.classList.remove("mobile-open"); |
| if (statsPanel) statsPanel.classList.remove("mobile-open"); |
| if (searchBtn) searchBtn.classList.remove("active"); |
| if (statsBtn) statsBtn.classList.remove("active"); |
| } |
| |
| function toggleMobileSheet(sheetName) { |
| var panel = sheetName === "search" |
| ? document.getElementById("searchBoxPanel") |
| : document.querySelector(".stats-panel"); |
| var button = sheetName === "search" |
| ? document.getElementById("mobileSearchBtn") |
| : document.getElementById("mobileStatsBtn"); |
| var wasOpen = panel && panel.classList.contains("mobile-open"); |
| |
| closeMobileSheets(); |
| |
| if (panel && !wasOpen) { |
| panel.classList.add("mobile-open"); |
| if (button) button.classList.add("active"); |
| } |
| } |
| |
| function toggleSearchBox() { |
| var panel = document.getElementById("searchBoxPanel"); |
| var btn = document.getElementById("searchToggleBtn"); |
| |
| if (panel.style.display === "none") { |
| panel.style.display = "block"; |
| btn.innerText = "إخفاء البحث"; |
| } else { |
| panel.style.display = "none"; |
| btn.innerText = "إظهار البحث"; |
| } |
| } |
| |
| function normalizeArabicText(text) { |
| return (text || "") |
| .toString() |
| .toLowerCase() |
| .replace(/[أإآا]/g, "ا") |
| .replace(/ى/g, "ي") |
| .replace(/ة/g, "ه") |
| .replace(/ؤ/g, "و") |
| .replace(/ئ/g, "ي") |
| .replace(/ـ/g, "") |
| .trim(); |
| } |
| |
| function applyMapSearch() { |
| var input = document.getElementById("mapSearchInput"); |
| var countBox = document.getElementById("searchCount"); |
| var query = normalizeArabicText(input.value); |
| var shown = 0; |
| var noCoordMatch = false; |
| |
| window.searchableMarkers.forEach(function(item) { |
| var match = query === "" || normalizeArabicText(item.name).includes(query); |
| |
| if (match) { |
| if (!item.map.hasLayer(item.marker)) { |
| item.marker.addTo(item.map); |
| } |
| shown++; |
| } else { |
| if (item.map.hasLayer(item.marker)) { |
| item.map.removeLayer(item.marker); |
| } |
| } |
| }); |
| |
| if (query !== "") { |
| window.noCoordinateSamples.forEach(function(item) { |
| if (normalizeArabicText(item.name).includes(query)) { |
| noCoordMatch = true; |
| } |
| }); |
| } |
| |
| if (query === "") { |
| countBox.style.color = "#334155"; |
| countBox.innerText = "اكتب للبحث داخل نقاط الخريطة"; |
| } else if (shown > 0) { |
| countBox.style.color = "#334155"; |
| countBox.innerText = "عدد النتائج على الخريطة: " + shown; |
| } else if (noCoordMatch) { |
| countBox.style.color = "#dc2626"; |
| countBox.innerText = "العينة موجودة ضمن عينات الباحث، لكنها بدون إحداثية. كرماً الدخول عليها من الجهاز اللوحي."; |
| } else { |
| countBox.style.color = "#dc2626"; |
| countBox.innerText = "لا توجد نتيجة مطابقة داخل نقاط الخريطة."; |
| } |
| } |
| |
| function clearMapSearch() { |
| document.getElementById("mapSearchInput").value = ""; |
| applyMapSearch(); |
| } |
| |
| setTimeout(function() { |
| var input = document.getElementById("mapSearchInput"); |
| if (input) { |
| input.addEventListener("keyup", applyMapSearch); |
| input.addEventListener("change", applyMapSearch); |
| } |
| }, 800); |
| </script> |
| |
| |
| <div style=" |
| position:fixed; |
| top:50%; |
| left:50%; |
| transform:translate(-50%,-50%); |
| z-index:9000; |
| width:min(420px, calc(100% - 40px)); |
| box-sizing:border-box; |
| padding:20px; |
| border-radius:20px; |
| background:rgba(255,255,255,0.95); |
| box-shadow:0 8px 30px rgba(0,0,0,0.25); |
| direction:rtl; |
| text-align:center; |
| font-family:Arial, sans-serif; |
| color:#991b1b; |
| font-size:17px; |
| font-weight:700; |
| line-height:1.9; |
| "> |
| <div style="font-size:20px;color:#111827;margin-bottom:6px;"> |
| صالح عبدالله صالح الدخيل - 1 |
| </div> |
| لا توجد إحداثيات لجميع العينات (1).<br> |
| يرجى الرجوع للنظام اللوحي. |
| </div> |
| |
| |
| <div class="map-footer" style=" |
| position: fixed; |
| bottom: 8px; |
| left: 8px; |
| background: rgba(255,255,255,0.85); |
| padding: 6px 10px; |
| border-radius: 10px; |
| font-size: 13px; |
| direction: rtl; |
| z-index: 9999; |
| box-shadow: 0 1px 8px rgba(0,0,0,0.15); |
| "> |
| تصميم وإعداد <b>نوف الناصر</b> |
| </div> |
| |
| |
| <div class="folium-map" id="map_586d77e36a4adda7dbd132e909873016" ></div> |
| |
| </body> |
| <script> |
| |
| |
| var map_586d77e36a4adda7dbd132e909873016 = L.map( |
| "map_586d77e36a4adda7dbd132e909873016", |
| { |
| center: [24.7136, 46.6753], |
| crs: L.CRS.EPSG3857, |
| ...{ |
| "zoom": 6, |
| "zoomControl": true, |
| "preferCanvas": false, |
| } |
| |
| } |
| ); |
| |
| |
| |
| |
| |
| var tile_layer_e072a31173485c0aebad118d07361934 = L.tileLayer( |
| "https://tile.openstreetmap.org/{z}/{x}/{y}.png", |
| { |
| "minZoom": 0, |
| "maxZoom": 19, |
| "maxNativeZoom": 19, |
| "noWrap": false, |
| "attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", |
| "subdomains": "abc", |
| "detectRetina": false, |
| "tms": false, |
| "opacity": 1, |
| } |
| |
| ); |
| |
| |
| tile_layer_e072a31173485c0aebad118d07361934.addTo(map_586d77e36a4adda7dbd132e909873016); |
| |
| |
| var tile_layer_46cb8e5ee2ba933ee1886bd288867728 = L.tileLayer( |
| "https://tile.openstreetmap.org/{z}/{x}/{y}.png", |
| { |
| "minZoom": 0, |
| "maxZoom": 19, |
| "maxNativeZoom": 19, |
| "noWrap": false, |
| "attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", |
| "subdomains": "abc", |
| "detectRetina": false, |
| "tms": false, |
| "opacity": 1, |
| } |
| |
| ); |
| |
| |
| tile_layer_46cb8e5ee2ba933ee1886bd288867728.addTo(map_586d77e36a4adda7dbd132e909873016); |
| |
| |
| var tile_layer_41d07f15606f85d188e21f7059243978 = L.tileLayer( |
| "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}", |
| { |
| "minZoom": 0, |
| "maxZoom": 18, |
| "maxNativeZoom": 18, |
| "noWrap": false, |
| "attribution": "\u0026copy; Esri", |
| "subdomains": "abc", |
| "detectRetina": false, |
| "tms": false, |
| "opacity": 1, |
| } |
| |
| ); |
| |
| |
| tile_layer_41d07f15606f85d188e21f7059243978.addTo(map_586d77e36a4adda7dbd132e909873016); |
| |
| |
| var locate_control_45bb28571675cd9a2056688304e5857e = L.control.locate( |
| {} |
| ).addTo(map_586d77e36a4adda7dbd132e909873016); |
| |
| |
| </script> |
| </html> |