To find a route, you will need two or more locations represented as the GeoPoint objects, highway preference, and knowledge of what kind of route you'd like to find: shortest, quickest or optimized.
The example code below shows how to find a route using the basic options. For additional options see the RoutingProblem object.
<% // get the RoutingProblem object var rProblem = Map.getRouting().createRoutingProblem(); // set routing stops array var stops = new Array(); var rStop; stops[0] = new GeoLocation( "Redlands, CA", 34.0528, -117.1531); stops[1] = new GeoLocation( "Loma Linda, CA", 34.0484, -117.2629); stops[2] = new GeoLocation( "San Bernardino, CA", 34.1214, -117.3046); stops[3] = new GeoLocation( "Highland, CA", 34.1282, -117.2106); // add routing stops for(var i = 0; i < stops.length; i++) { rStop = Server.CreateObject("RMIMS.RoutingStop"); rStop.setStop(createPoint( stops[i].x, stops[i].y)); rStop.setLabel(stops[i].label); rProblem.addStop(rStop); } rProblem.setHighwayPreference( 50); rProblem.setWeight(rmShortest); // to find quickest use rmQuickest rProblem.setOptimize( false); // no optimization var Routing = Map.getRouting(); var RouteID = Routing.findRoute(rProblem, true, -1); // show the route Routing.setRoute( RouteID); var r = Routing.getDrivingDirections( RouteID).getExtent(); Map.setExtent( inflateRect(r, 10)); //increase borders // print driving directions var DDirs = Routing.getDrivingDirections( RouteID); var DSeg; Response.Write( "<p>"+DDirs.getStartText()+"<br>\n"); Response.Write( DDirs.getFinishText()+"<br>\n"); Response.Write( DDirs.getTotalText()+"<p>\n"); for( var i =0; i < DDirs.getSegmentCount(); i++) { DSeg = DDirs.getSegment( i); Response.Write( (i+1)+". " + DSeg.getText() + "<br>\n"); // if there is TimeLengthText if( DSeg.getSegmentType() != rmArrive && DSeg.getSegmentType() != rmDepart) Response.Write( DSeg.getTimeLengthText() + "<br>\n"); } function createPoint(x, y) { var pt = Server.CreateObject("RMIMS.GeoPoint"); pt.x = x; pt.y = y; return pt; } function GeoLocation( label, lat, lon) { var pt = Map.getProjection().project( lat, lon); this.label = label; this.x = pt.x; this.y = pt.y; } function inflateRect(r, percVal) { var dx = ((r.right - r.left) * percVal) / 100.0; var dy = ((r.top - r.bottom) * percVal) / 100.0; r.left -= dx; r.top += dy; r.right += dx; r.bottom -= dy; return r; } %> <img src="<%= Map.getMapImageURL(Map.getImageWidth(), Map.getImageHeight(), rmDefault)%>" width="<%=Map.getImageWidth()%>", height="<%=Map.getImageHeight()%>">
Advanced version of the findRoute function JScript / VBScript.
<% var Map = OpenMap(); // get the RoutingProblem object var rProblem = Map.getRouting().createRoutingProblem(); // set routing stops array var stops = new Array(); stops[0] = new GeoLocation ("Redlands, CA", 34.0528, -117.1531); stops[1] = new GeoLocation ("Redlands, CO", 39.0854, -108.6515); var rStop; // add routing stops for(var i = 0; i < stops.length; i++) { rStop = Server.CreateObject("RMIMS.RoutingStop"); rStop.setStop(createPoint( stops[i].x, stops[i].y)); rStop.setLabel(stops[i].label); rProblem.addStop(rStop); } rProblem.setHighwayPreference( 50); rProblem.setWeight(rmShortest); // to find quickest use rmQuickest rProblem.setOptimize( false); // no optimization // Trip planning ***************************************************************** rProblem.setTripStart( createTime( 8, 0, 0)); rProblem.setDayDriveStart( createTimeSpan( 0, 8, 30, 0)); rProblem.setDayDriveEnd( createTimeSpan( 0, 17, 0, 0)); rProblem.setDriveBetweenRest( createTimeSpan( 0, 3, 0, 0)); rProblem.setRestDuration( createTimeSpan( 0, 0, 30, 0)); rProblem.setDriveFlexibility( createTimeSpan( 0, 0, 30, 0)); rProblem.enableRestBreaks( true); rProblem.enableTripPlanning( true); //******************************************************************************** var routing = Map.getRouting(); var RouteID = routing.findRoute(rProblem, true, -1); // show the route routing.setRoute( RouteID); var r = routing.getDrivingDirections( RouteID).getExtent(); Map.setExtent( inflateRect(r, 10)); // increase borders // print driving directions var DDirs = routing.getDrivingDirections( RouteID); var DSeg; Response.Write( "<p>"+DDirs.getStartText()+"<br>\n"); Response.Write( DDirs.getFinishText()+"<br>\n"); Response.Write( DDirs.getTotalText()+"<p>\n"); for( i = 0; i < DDirs.getSegmentCount(); i++) { DSeg = DDirs.getSegment( i); Response.Write( (i+1)+". " + DSeg.getText() + "<br>\n"); // if there is TimeLengthText if(DSeg.getSegmentType() != rmArrive && DSeg.getSegmentType() != rmDepart) { Response.Write( DSeg.getTimeLengthText() + "<br>\n"); } } function createTimeSpan( days, hours, minutes, seconds) { var ts = Server.CreateObject( "RMIMS.TimeSpan"); ts.setDays( days); ts.setHours( hours); ts.setMinutes( minutes); ts.setSeconds( seconds); return( ts); } function createTime( hours, minutes, seconds) { var t = Server.CreateObject( "RMIMS.Time"); t.setHours( hours); t.setMinutes( minutes); t.setSeconds( seconds); return( t); } function inflateRect(r, percVal) { var dx = ((r.right - r.left) * percVal) / 100.0; var dy = ((r.top - r.bottom) * percVal) / 100.0; r.left -= dx; r.top += dy; r.right += dx; r.bottom -= dy; return r; } function createPoint(x, y) { var pt = Server.CreateObject("RMIMS.GeoPoint"); pt.x = x; pt.y = y; return pt; } %> <img src="<%= Map.getMapImageURL(Map.getImageWidth(), Map.getImageHeight(), rmDefault)%>" width="<%=Map.getImageWidth()%>" height="<%=Map.getImageHeight()%>">VBScript version | Output