Move more engine-specific stuff out of main .js

This commit is contained in:
Richard Fairhurst 2014-01-22 18:20:07 +00:00
parent c4f3d1bd32
commit d14406cead
2 changed files with 26 additions and 21 deletions

View file

@ -99,10 +99,11 @@ OSM.Routing=function(map,name,jqSearch) {
r.map.fitBounds(r.polyline.getBounds());
};
// Take an array of directions and write it out
// (we use OSRM's route_instructions format)
// Take directions and write them out
// data = { steps: array of [latlng, sprite number, instruction text, distance in metres] }
// sprite numbers equate to OSRM's route_instructions turn values
// *** translations?
r.setItinerary=function(steps) {
r.setItinerary=function(data) {
// Create base table
$("#content").removeClass("overlay-sidebar");
$('#sidebar_content').empty();
@ -111,16 +112,10 @@ OSM.Routing=function(map,name,jqSearch) {
$('#sidebar_content').html(html);
// Add each row
var cumulative=0;
for (var i=0; i<steps.length; i++) {
var step=steps[i];
var instCodes=step[0].split('-');
// Assemble instruction text
var instText="<b>"+(i+1)+".</b> ";
instText+=TURN_INSTRUCTIONS[instCodes[0]];
if (instCodes[1]) { instText+="exit "+instCodes[1]+" "; }
if (instCodes[0]!=15) { instText+=step[1] ? "<b>"+step[1]+"</b>" : "(unnamed)"; }
for (var i=0; i<data.steps.length; i++) {
var step=data.steps[i];
// Distance
var dist=step[2];
var dist=step[3];
if (dist<5) { dist=""; }
else if (dist<200) { dist=Math.round(dist/10)*10+"m"; }
else if (dist<1500) { dist=Math.round(dist/100)*100+"m"; }
@ -128,16 +123,14 @@ OSM.Routing=function(map,name,jqSearch) {
else { dist=Math.round(dist/1000)+"km"; }
// Add to table
var row=$("<tr class='turn'/>");
row.append("<td class='direction i"+instCodes[0]+"'> ");
row.append("<td class='instruction'>"+instText);
row.append("<td class='direction i"+step[1]+"'> ");
row.append("<td class='instruction'>"+step[2]);
row.append("<td class='distance'>"+dist);
with ({num: i, dist: step[3]}) {
row.on('click',function(e) {
r.clickTurn(num, r.polyline.getLatLngs()[dist]);
});
with ({ num: i, ll: step[0] }) {
row.on('click',function(e) { r.clickTurn(num, ll); });
};
$('#turnbyturn').append(row);
cumulative+=step[2];
cumulative+=step[3];
}
};
r.clickTurn=function(num,latlng) {

View file

@ -21,10 +21,22 @@ OSM.RoutingEngines.list.push({
alert("Couldn't find route between those two places");
return false;
}
// *** store hints
// Draw polyline
var line=L.PolylineUtil.decode(data.route_geometry);
for (i=0; i<line.length; i++) { line[i].lat/=10; line[i].lng/=10; }
router.setPolyline(line);
router.setItinerary(data.route_instructions);
// *** store hints
// Assemble instructions
var steps=[];
for (i=0; i<data.route_instructions.length; i++) {
var s=data.route_instructions[i];
var instCodes=s[0].split('-');
var instText="<b>"+(i+1)+".</b> ";
instText+=TURN_INSTRUCTIONS[instCodes[0]];
if (instCodes[1]) { instText+="exit "+instCodes[1]+" "; }
if (instCodes[0]!=15) { instText+=s[1] ? "<b>"+s[1]+"</b>" : "(unnamed)"; }
steps.push([line[s[3]], s[0].split('-')[0], instText, s[2]]);
}
router.setItinerary({ steps: steps });
}
});