dojo.require("esri.map"); dojo.require("esri.tasks.query"); dojo.require("esri.tasks.geometry"); dojo.require("esri.toolbars.draw"); dojo.require("esri.tasks.route"); //routing var divMain, routeTask, routeParams; var stopSymbol, routeSymbol, lastStop, barrierSymbol; var segmentSymbol, segmentGraphic; var OneMap = new GetOneMap('divMain', 'SM'); var totalDistance = 0; var totalTime = 0; var f; var mapOnClick_addBarriers_connect, mapOnClick_addStops_connect; var dojoConnections = []; var barriersArray = [];
} function initStop() { mapOnClick_addStops_connect = dojo.connect(map, "onClick", addStop);
routeParams.stops = new esri.tasks.FeatureSet();
stopSymbol = new esri.symbol.SimpleMarkerSymbol().setStyle(esri.symbol.SimpleMarkerSymbol.STYLE_CIRCLE).setSize(15); stopSymbol.outline.setWidth(4); }
function solveRoute(routeParams) {
routeTask.solve(routeParams); }
function clearRoutes() {
for (var i = routes.length-1; i>=0; i--) { map.graphics.remove(routes.splice(i, 1)[0]); } routes = []; }
//Clear barriers
function clearBarriers() { removeEventHandlers(); for (var i = routeParams.barriers.features.length - 1; i >= 0; i--) { map.graphics.remove(routeParams.barriers.features.splice(i, 1)[0]); } }
routeParams.barriers = new esri.tasks.FeatureSet();
barrierSymbol = new esri.symbol.SimpleMarkerSymbol().setStyle(esri.symbol.SimpleMarkerSymbol.STYLE_CROSS).setSize(10); barrierSymbol.outline.setWidth(3).setColor(new dojo.Color([255, 0, 0])); }
function addBarrier(evt) { var barrier = map.graphics.add(new esri.Graphic(evt.mapPoint, barrierSymbol)); routeParams.barriers.features.push(barrier); //barriersArray.push(barrier); //routeTask.solve(routeParams); }
function removeEventHandlers() { dojo.disconnect(mapOnClick_addBarriers_connect); dojo.disconnect(mapOnClick_addStops_connect);
}
//Adds the solved route to the map as a graphic function showRouteV(routeResults, barriers, messages) { clearRoutes();
var distance; var time; var directions = routeResults[0].directions; var directionFeatures = directions.features; map.graphics.add(routeResults[0].route.setSymbol(routeSymbol));
//Displays any error returned by the Route Task function errorHandler(err) { alert("An error occured\n" + err.message + "\n" + err.details.join("\n"));
routeParams.stops.features.splice(0, 0, lastStop); map.graphics.remove(routeParams.stops.features.splice(1, 1)[0]); } function zoomToSegment(index) {
//Format the time as hours and minutes function formatTime(time) { var hr = Math.floor(time / 60), //Important to use math.floor with hours min = Math.round(time % 60);
if (hr < 1 && min < 1) { return ""; } else if (hr < 1) { return min + " minute(s)"; }
return hr + " hour(s) " + min + " minute(s)";
}
//Round the distance to the nearest hundredth of a unit function formatDistance(dist) { var d = Math.round(dist * 100) / 100; if (d === 0) { return "" }
return d; }
//Round the distance to 2 decimal places function roundDistance(dist, dec) { var result = Math.round(dist * Math.pow(10, dec)) / Math.pow(10, dec); return result; }
//to store the time in mins function minsCal(time) { var min = time; return time; }
//round the time to 2 decimal place function roundTime(time, dec) { var result = Math.round(time * Math.pow(10, dec)) / Math.pow(10, dec); return result; }
//endroute
function GetRouting(routeParams) {
routeTask.solve(routeParams); alert("Please wait.........Route is being calculated."); }
function showRoute(routeResults, barriers, messages) { clearRoutes();
directions = routeResults[0].directions; directionFeatures = directions.features; //Add route to the map dojo.forEach(routeResults, function (routeResult, i) { routes.push(map.graphics.add(new esri.Graphic(directions.mergedGeometry, routeSymbol))) });