X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/5c0e96e0e0e99b3469c286f4bf77d4d0abf47c79..73eb8a5336ea14fa1ccc6de9442125b6475bf6bb:/app/assets/javascripts/routing.js.erb?ds=inline diff --git a/app/assets/javascripts/routing.js.erb b/app/assets/javascripts/routing.js.erb index d62e94f0c..787d31dda 100644 --- a/app/assets/javascripts/routing.js.erb +++ b/app/assets/javascripts/routing.js.erb @@ -10,9 +10,18 @@ var ROUTING_POLYLINE={ weight: 10 }; +var ROUTING_POLYLINE_HIGHLIGHT={ + color: '#ff0', + opacity: 0.5, + weight: 12 +}; + OSM.RoutingEngines={ - list: [] + list: [], + add: function(supportsHTTPS,engine) { + if (document.location.protocol=="http:" || supportsHTTPS) this.list.push(engine); + } }; OSM.Routing=function(map,name,jqSearch) { @@ -171,7 +180,7 @@ OSM.Routing=function(map,name,jqSearch) { }; // Take directions and write them out - // data = { steps: array of [latlng, sprite number, instruction text, distance in metres] } + // data = { steps: array of [latlng, sprite number, instruction text, distance in metres, highlightPolyline] } // sprite numbers equate to OSRM's route_instructions turn values r.setItinerary=function(data) { // Create base table @@ -200,8 +209,9 @@ OSM.Routing=function(map,name,jqSearch) { row.append(" "); row.append(""+step[2]); row.append(""+dist); - with ({ num: i, ll: step[0] }) { - row.on('click',function(e) { r.clickTurn(num, ll); }); + with ({ instruction: step[2], ll: step[0], lineseg: step[4] }) { + row.on('click',function(e) { r.clickTurn(instruction, ll); }); + row.hover(function(e){r.highlightSegment(lineseg);}, function(e){r.unhighlightSegment();}); }; $('#turnbyturn').append(row); cumulative+=step[3]; @@ -209,16 +219,25 @@ OSM.Routing=function(map,name,jqSearch) { $('#sidebar_content').append('

' + r.chosenEngine.creditline + '

'); }; - r.clickTurn=function(num,latlng) { - r.popup=L.popup().setLatLng(latlng).setContent("

"+(num+1)+"

").openOn(r.map); + r.clickTurn=function(instruction,latlng) { + r.popup=L.popup().setLatLng(latlng).setContent("

"+instruction+"

").openOn(r.map); }; + r.highlightSegment=function(lineseg){ + if (r.highlighted) map.removeLayer(r.highlighted); + r.highlighted=L.polyline(lineseg, ROUTING_POLYLINE_HIGHLIGHT).addTo(r.map); + } + r.unhighlightSegment=function(){ + if (r.highlighted) map.removeLayer(r.highlighted); + } r.formatDistance=function(m) { if (m < 1000 ) { return Math.round(m) + "m"; } else if (m < 10000) { return (m/1000.0).toFixed(1) + "km"; } else { return Math.round(m / 1000) + "km"; } }; r.formatTime=function(s) { - var d=new Date(s*1000); var h=d.getHours(); var m=d.getMinutes(); + var m=Math.round(s/60); + var h=Math.floor(m/60); + m -= h*60; return h+":"+(m<10 ? '0' : '')+m; };