From 09195d77d9243f5f74cd7a0b759a8562ab4fb141 Mon Sep 17 00:00:00 2001 From: cerenX9 Date: Fri, 24 Jul 2026 16:05:15 +0300 Subject: [PATCH] Implement true OSRM Match API --- .../static/src/js/dashboard.js | 34 +++++++++++++++++++ .../views/dashboard_template.xml | 2 +- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/addons/mymach_fleet_intelligence/static/src/js/dashboard.js b/addons/mymach_fleet_intelligence/static/src/js/dashboard.js index da1dccb..542bcb5 100644 --- a/addons/mymach_fleet_intelligence/static/src/js/dashboard.js +++ b/addons/mymach_fleet_intelligence/static/src/js/dashboard.js @@ -188,6 +188,40 @@ if (greenPts.length > 0) { var polyGreen = L.polyline(greenPts, { color: '#10b981', weight: 8, opacity: 0.95, lineCap: 'round', lineJoin: 'round', smoothFactor: 2.0 }).addTo(map); activePolylines.push(polyGreen); + + // OSRM Map Matching (Pürüzsüz Rota Çizimi) + if (greenPts.length >= 2) { + // Sadece son 80 noktayı al ki OSRM URL limiti aşılmasın + var validPts = greenPts.length > 80 ? greenPts.slice(-80) : greenPts; + var coords = validPts.map(function(p) { return p[1] + ',' + p[0]; }); + var osrmUrl = 'https://router.project-osrm.org/match/v1/driving/' + coords.join(';') + '?overview=full&geometries=geojson'; + + fetch(osrmUrl) + .then(function(res) { return res.json(); }) + .then(function(data) { + if (data && data.matchings && data.matchings.length > 0) { + // Ham (kırık) çizgiyi haritadan ve diziden kaldır + map.removeLayer(polyGreen); + var index = activePolylines.indexOf(polyGreen); + if (index > -1) activePolylines.splice(index, 1); + + // OSRM'den gelen pürüzsüz rotayı GeoJSON olarak çiz + data.matchings.forEach(function(match) { + var snappedPoly = L.geoJSON(match.geometry, { + style: { color: '#10b981', weight: 8, opacity: 0.95, lineCap: 'round', lineJoin: 'round' } + }).addTo(map); + activePolylines.push(snappedPoly); + }); + + // Yeni çizilen pürüzsüz rotaya göre kamerayı odakla + var group = new L.featureGroup(activePolylines); + map.fitBounds(group.getBounds(), { padding: [50, 50] }); + } + }) + .catch(function(err) { + console.log('OSRM Map Matching Hatası, ham çizgi bırakıldı:', err); + }); + } } // 3. Kırmızı 1 km+ Sapma Çizgisi diff --git a/addons/mymach_fleet_intelligence/views/dashboard_template.xml b/addons/mymach_fleet_intelligence/views/dashboard_template.xml index b796b1a..cb46466 100644 --- a/addons/mymach_fleet_intelligence/views/dashboard_template.xml +++ b/addons/mymach_fleet_intelligence/views/dashboard_template.xml @@ -270,7 +270,7 @@ style="display: none;"/> - +