From baedd56a1c7b16abcfc858d58ebb9e183e8348e6 Mon Sep 17 00:00:00 2001 From: Dauren777 Date: Fri, 19 Jun 2026 06:14:48 +0000 Subject: [PATCH] v5: all road types with names on map, snap-to-road labels --- index.html | 91 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 24 deletions(-) diff --git a/index.html b/index.html index 334a71f..6c0ae6e 100644 --- a/index.html +++ b/index.html @@ -92,14 +92,16 @@ body{font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,sans-serif; Опора ВЛ В Въезд - Улица (OSM) + Асфальт + Грунтовка + Просёлок/поле Здание ',iconSize:[22,22],iconAnchor:[11,11]}); - const marker=L.marker(latlng,{icon}).addTo(map).bindPopup(''+name+'
'+latlng.lat.toFixed(6)+', '+latlng.lng.toFixed(6)); - markers.push({id:poleCount,lat:latlng.lat,lng:latlng.lng,name,marker}); + const marker=L.marker(latlng,{icon}).addTo(map).bindPopup(''+name+'
'+latlng.lat.toFixed(6)+', '+latlng.lng.toFixed(6)+suffix); + markers.push({id:poleCount,lat:latlng.lat,lng:latlng.lng,name,marker,road:rn}); if(markers.length>1){ const p=markers[markers.length-2]; const line=L.polyline([[p.lat,p.lng],[latlng.lat,latlng.lng]],{color:'#00E5FF',weight:2.5,dashArray:'6,5'}).addTo(map); @@ -421,7 +464,7 @@ function updateTable(){ const dist=i>0?haversine(markers[i-1].lat,markers[i-1].lng,p.lat,p.lng):0; total+=dist; const tr=document.createElement('tr'); - tr.innerHTML=''+p.id+''+p.name+''+p.lat.toFixed(6)+''+p.lng.toFixed(6)+''+(i>0?dist.toFixed(1):'—')+''; + tr.innerHTML=''+p.id+''+p.name+''+(p.road||'')+''+p.lat.toFixed(6)+''+p.lng.toFixed(6)+''+(i>0?dist.toFixed(1):'—')+''; tbody.appendChild(tr); }); const avg=markers.length>1?(total/(markers.length-1)):0; @@ -503,8 +546,8 @@ function exportDrawIO(){ } function exportCSV(){ if(!markers.length){showToast('Нет опор');return;} - let csv='№,Название,Широта,Долгота,Расстояние_до_предыдущей_м\n'; - markers.forEach((p,i)=>{const d=i>0?haversine(markers[i-1].lat,markers[i-1].lng,p.lat,p.lng).toFixed(1):'';csv+=p.id+','+p.name+','+p.lat.toFixed(6)+','+p.lng.toFixed(6)+','+d+'\n';}); + let csv='№,Название,Улица,Широта,Долгота,Расстояние_до_предыдущей_м\n'; + markers.forEach((p,i)=>{const d=i>0?haversine(markers[i-1].lat,markers[i-1].lng,p.lat,p.lng).toFixed(1):'';csv+=p.id+','+p.name+','+(p.road||'')+','+p.lat.toFixed(6)+','+p.lng.toFixed(6)+','+d+'\n';}); download(csv,'opory_vl04.csv','text/csv;charset=utf-8'); } function download(content,filename,type){