jsrouting: mouseover an instruction, highlight the route segment
This commit is contained in:
parent
eab2eeaa47
commit
15f0367e7f
4 changed files with 41 additions and 8 deletions
|
@ -42,7 +42,7 @@ GraphHopperEngine.prototype.createConfig = function() {
|
|||
instrText += instr.descriptions[i];
|
||||
var latlng = instr.latLngs[i];
|
||||
var distInMeter = instr.distances[i];
|
||||
steps.push([{lat: latlng[0], lng: latlng[1]}, instrCode, instrText, distInMeter]);
|
||||
steps.push([{lat: latlng[0], lng: latlng[1]}, instrCode, instrText, distInMeter, []]); // TODO does graphhopper map instructions onto line indices?
|
||||
}
|
||||
router.setItinerary({ steps: steps, distance: data.route.distance, time: data.route['time']/1000 });
|
||||
return true;
|
||||
|
|
|
@ -60,14 +60,27 @@ MapQuestEngine.prototype.createConfig = function() {
|
|||
}
|
||||
router.setPolyline(poly);
|
||||
|
||||
// data.shape.maneuverIndexes links turns to polyline positions
|
||||
// data.legs[0].maneuvers is list of turns
|
||||
// data.route.shape.maneuverIndexes links turns to polyline positions
|
||||
// data.route.legs[0].maneuvers is list of turns
|
||||
var steps=[];
|
||||
var mq=data.route.legs[0].maneuvers;
|
||||
for (var i=0; i<mq.length; i++) {
|
||||
var s=mq[i];
|
||||
var d=(i==mq.length-1) ? 15: this.MQ_SPRITE_MAP[s.turnType];
|
||||
steps.push([L.latLng(s.startPoint.lat, s.startPoint.lng), d, s.narrative, s.distance*1000]);
|
||||
var d;
|
||||
var linesegstart, linesegend, lineseg;
|
||||
linesegstart = data.route.shape.maneuverIndexes[i];
|
||||
if (i==mq.length-1) {
|
||||
d = 15;
|
||||
linesegend = linesegstart + 1;
|
||||
} else {
|
||||
d = this.MQ_SPRITE_MAP[s.turnType];
|
||||
linesegend = data.route.shape.maneuverIndexes[i+1] + 1;
|
||||
}
|
||||
lineseg = [];
|
||||
for (var j=linesegstart; j<linesegend; j++) {
|
||||
lineseg.push(L.latLng(data.route.shape.shapePoints[j*2], data.route.shape.shapePoints[j*2+1]));
|
||||
}
|
||||
steps.push([L.latLng(s.startPoint.lat, s.startPoint.lng), d, s.narrative, s.distance*1000, lineseg]);
|
||||
}
|
||||
router.setItinerary( { steps: steps, distance: data.route.distance*1000, time: data.route['time'] });
|
||||
return true;
|
||||
|
|
|
@ -38,12 +38,18 @@ OSRMEngine.prototype.createConfig = function() {
|
|||
var steps=[];
|
||||
for (i=0; i<data.route_instructions.length; i++) {
|
||||
var s=data.route_instructions[i];
|
||||
var linesegend;
|
||||
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>" : I18n.t('javascripts.directions.instructions.unnamed'); }
|
||||
steps.push([line[s[3]], s[0].split('-')[0], instText, s[2]]);
|
||||
if ((i+1)<data.route_instructions.length) {
|
||||
linesegend = data.route_instructions[i+1][3] + 1;
|
||||
} else {
|
||||
linesegend = s[3] + 1;
|
||||
}
|
||||
steps.push([line[s[3]], s[0].split('-')[0], instText, s[2], line.slice(s[3], linesegend)]);
|
||||
}
|
||||
if (steps.length) router.setItinerary({ steps: steps, distance: data.route_summary.total_distance, time: data.route_summary.total_time });
|
||||
return true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue