/* * Open Source Routing Machine (OSRM) - Web (GUI) Interface * Copyright (C) Pascal Neis, 2011 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU AFFERO General Public License as published by * the Free Software Foundation; either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * or see http://www.gnu.org/licenses/agpl.txt. */ /** * Title: Route.js * Description: JS file for routing * * @author Pascal Neis, pascal@neis-one.org * @version 0.2 2011-06-23 */ //====================== // OBJECTS //Map var HOST_WEBSITE = 'http://map.project-osrm.org/';//location.host var HOST_ROUTING_URL = 'http://routingdemo.geofabrik.de/route-de/'; var ISCALCULATING = false; var EPSG_4326 = new OpenLayers.Projection("EPSG:4326"); var EPSG_900913 = new OpenLayers.Projection("EPSG:900913"); //====================== // FUNCTIONS /* * routing()-Function to create and send route request */ function routing(isDragRoute){ //Check if startpoint is set if(!isStartPointSet){ //alert("Please set your Start location first!"); document.getElementById('information').innerHTML = '
Please set your Start location first!
'; return; } //Check if endpoint is set if(!isEndPointSet){ //alert("Please set your Destination first!"); document.getElementById('information').innerHTML = 'Please set your Destination first!
'; return; } //Check if already a route is planning if(!isDragRoute){ ISCALCULATING = false; } if(ISCALCULATING){ return; } else{ ISCALCULATING = true; } //Get Coordinates of the Start and Endpoint var startFeat = getMarkerByName('start'); var endFeat = getMarkerByName('end'); var from = new OpenLayers.LonLat(startFeat.geometry.x,startFeat.geometry.y).transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326")); var to = new OpenLayers.LonLat(endFeat.geometry.x,endFeat.geometry.y).transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326")); //Send Request var script = document.createElement('script'); script.type = 'text/javascript'; var callBackFunction = 'showResultsRoute'; var instructions = '&instructions=true'; if(isDragRoute){ callBackFunction = 'showResultsDragRoute'; instructions = '&instructions=false'; document.getElementById('information').innerHTML = 'Release mouse button to get Route Information!
(If no Route Summary is diplayed, press the Route!-button)'; } else{ document.getElementById('information').innerHTML = 'One moment please ...
'; } script.src = HOST_ROUTING_URL + "&"+from.lat + '&' + from.lon + '&' + to.lat + '&' + to.lon + '&z='+this.map.getZoom()+'&output=json&jsonp='+callBackFunction+instructions+'&geomformat=cmp';//+'&simplified=yes'; document.body.appendChild(script); } /* * reroute()-Function */ function reroute() { if(!isStartPointSet || !isEndPointSet){ return; } routing(false); } /* * showResultsDragRoute()-Function to show route result for drag-route */ function showResultsDragRoute(response) { if (response) { //Display Route showRouteGeometry(response); } markersLayer.clearMarkers(); ISCALCULATING = false; } /* * showResultsRoute()-Function to show route result */ function showResultsRoute(response) { if (response) { //Display Route if(document.getElementById("cbNoNames").checked == true){ showNoNameStreets(response); } else{ showRouteGeometry(response); } //Create Link of the route var startFeat = getMarkerByName('start'); var endFeat = getMarkerByName('end'); var from = new OpenLayers.LonLat(startFeat.geometry.x,startFeat.geometry.y).transform(EPSG_900913,EPSG_4326); var to = new OpenLayers.LonLat(endFeat.geometry.x,endFeat.geometry.y).transform(EPSG_900913,EPSG_4326); var routelink = ''; //Link for the GPX Download var gpxLink = '(Get GPX File)'; //Show Route Summary var output = 'Some information about your Way
from \''+response.route_summary.start_point+'\' to \''+response.route_summary.end_point+'\'
Distance: '+response.route_summary.total_distance/1000+' km - Duration: '+secondsToTime(response.route_summary.total_time)+'
'+routelink+'
The Route-Instructions: '+gpxLink+'
'; //Show Route Instructions output += ''+(i+1)+'. | '+response.route_instructions[i][0]+' on '+response.route_instructions[i][1]+' for '+getDistanceWithUnit(response.route_instructions[i][2])+' |