]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/routing_engines/mapquest_bicycle.js
Merge pull request #10 from danstowell/jsrouting-credits
[rails.git] / app / assets / javascripts / routing_engines / mapquest_bicycle.js
index 123f2700a2ffcb5c6137757694d9939e564e8016..c7995246ab22466a84aeed019eac1d86c1f26498 100644 (file)
@@ -3,23 +3,46 @@
 // http://open.mapquestapi.com/directions/
 // https://github.com/apmon/openstreetmap-website/blob/21edc353a4558006f0ce23f5ec3930be6a7d4c8b/app/controllers/routing_controller.rb#L153
 
-// *** needs to give credit
-
 OSM.RoutingEngines.list.push({
-       name: 'Bicycle (MapQuest Open)',
-       draggable: true,
+       name: "javascripts.directions.engines.mapquest_bike",
+       creditline: 'Directions courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> <img src="http://developer.mapquest.com/content/osm/mq_logo.png">',
+       draggable: false,
        _hints: {},
-       getRoute: function(final,points) {
+       MQ_SPRITE_MAP: {
+               0: 1, // straight
+               1: 2, // slight right
+               2: 3, // right
+               3: 4, // sharp right
+               4: 5, // reverse
+               5: 6, // sharp left
+               6: 7, // left
+               7: 8, // slight left
+               8: 5, // right U-turn
+               9: 5, // left U-turn
+               10: 2, // right merge
+               11: 8, // left merge
+               12: 2, // right on-ramp
+               13: 8, // left on-ramp
+               14: 2, // right off-ramp
+               15: 8, // left off-ramp
+               16: 2, // right fork
+               17: 8, // left fork
+               18: 1  // straight fork
+       },
+       getRoute: function(isFinal,points) {
                var url="http://open.mapquestapi.com/directions/v2/route?key=Fmjtd%7Cluur290anu%2Crl%3Do5-908a0y";
                var from=points[0]; var to=points[points.length-1];
                url+="&from="+from.join(',');
                url+="&to="+to.join(',');
                url+="&routeType=bicycle";
+        //url+="&locale=" + I18n.currentLocale(); //Doesn't actually work. MapQuest requires full locale e.g. "de_DE", but I18n only provides language, e.g. "de"
                url+="&manMaps=false";
                url+="&shapeFormat=raw&generalize=0";
                this.requestJSONP(url+"&callback=");
        },
        gotRoute: function(router,data) {
+               // *** what if no route?
+               
                var poly=[];
                var shape=data.route.shape.shapePoints;
                for (var i=0; i<shape.length; i+=2) {
@@ -29,7 +52,13 @@ OSM.RoutingEngines.list.push({
 
                // data.shape.maneuverIndexes links turns to polyline positions
                // data.legs[0].maneuvers is list of turns
-               console.log(data);
-//             router.setItinerary(data.route_instructions);
+               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]);
+               }
+               router.setItinerary( { steps: steps });
        }
 });