diff --git a/WebContent/OSRM.GUI.js b/WebContent/OSRM.GUI.js index b1ede611b..675b7f743 100644 --- a/WebContent/OSRM.GUI.js +++ b/WebContent/OSRM.GUI.js @@ -30,23 +30,57 @@ init: function() { OSRM.GUI.visible = true; OSRM.GUI.width = document.getElementById("main-wrapper").clientWidth; - // translate + // init favicon + document.getElementById('favicon').href=OSRM.G.images["favicon"].src; + + // init starting source/target + document.getElementById('gui-input-source').value = OSRM.DEFAULTS.ONLOAD_SOURCE; + document.getElementById('gui-input-target').value = OSRM.DEFAULTS.ONLOAD_TARGET; + + // init events + // [TODO: switch to new event model] + document.getElementById("gui-toggle-in").onclick = OSRM.GUI.toggleMain; + document.getElementById("gui-toggle-out").onclick = OSRM.GUI.toggleMain; + + document.getElementById("gui-input-source").onchange = function() {OSRM.RoutingGUI.inputChanged(OSRM.C.SOURCE_LABEL);}; + document.getElementById("gui-delete-source").onclick = function() {OSRM.RoutingGUI.deleteMarker(OSRM.C.SOURCE_LABEL);}; + document.getElementById("gui-search-source").onclick = function() {OSRM.RoutingGUI.showMarker(OSRM.C.SOURCE_LABEL);}; + + document.getElementById("gui-input-target").onchange = function() {OSRM.RoutingGUI.inputChanged(OSRM.C.TARGET_LABEL);}; + document.getElementById("gui-delete-target").onclick = function() {OSRM.RoutingGUI.deleteMarker(OSRM.C.TARGET_LABEL);}; + document.getElementById("gui-search-target").onclick = function() {OSRM.RoutingGUI.showMarker(OSRM.C.TARGET_LABEL);}; + + document.getElementById("gui-reset").onclick = OSRM.RoutingGUI.resetRouting; + document.getElementById("gui-reverse").onclick = OSRM.RoutingGUI.reverseRouting; + document.getElementById("gui-options-toggle").onclick = OSRM.GUI.toggleOptions; + document.getElementById("open-josm").onclick = OSRM.RoutingGUI.openJOSM; + document.getElementById("open-osmbugs").onclick = OSRM.RoutingGUI.openOSMBugs; + document.getElementById("option-highlight-nonames").onclick = OSRM.Routing.getRoute; + + // gui after transition events + if( OSRM.Browser.FF3==-1 && OSRM.Browser.IE6_9==-1 ) { + document.getElementById('main-wrapper').addEventListener("transitionend", OSRM.GUI.onMainTransitionEnd, false); + document.getElementById('main-wrapper').addEventListener("webkitTransitionEnd", OSRM.GUI.onMainTransitionEnd, false); + document.getElementById('main-wrapper').addEventListener("oTransitionEnd", OSRM.GUI.onMainTransitionEnd, false); + document.getElementById('main-wrapper').addEventListener("MSTransitionEnd", OSRM.GUI.onMainTransitionEnd, false); + } +}, + +// set language dependent labels +setLanguage: function() { document.getElementById("open-josm").innerHTML = OSRM.loc("OPEN_JOSM"); document.getElementById("open-osmbugs").innerHTML = OSRM.loc("OPEN_OSMBUGS"); document.getElementById("gui-reset").innerHTML = OSRM.loc("GUI_RESET"); document.getElementById("gui-reverse").innerHTML = OSRM.loc("GUI_REVERSE"); document.getElementById("gui-option-highlight-nonames-label").innerHTML = OSRM.loc("GUI_HIGHLIGHT_UNNAMED_ROADS"); - document.getElementById("options-toggle").innerHTML = OSRM.loc("GUI_OPTIONS"); + document.getElementById("gui-options-toggle").innerHTML = OSRM.loc("GUI_OPTIONS"); document.getElementById("gui-search-source").innerHTML = OSRM.loc("GUI_SEARCH"); document.getElementById("gui-search-target").innerHTML = OSRM.loc("GUI_SEARCH"); document.getElementById("gui-search-source-label").innerHTML = OSRM.loc("GUI_START")+":"; document.getElementById("gui-search-target-label").innerHTML = OSRM.loc("GUI_END")+":"; - document.getElementById("input-source-name").title = OSRM.loc("GUI_START_TOOLTIP"); - document.getElementById("input-target-name").title = OSRM.loc("GUI_END_TOOLTIP"); + document.getElementById("gui-input-source").title = OSRM.loc("GUI_START_TOOLTIP"); + document.getElementById("gui-input-target").title = OSRM.loc("GUI_END_TOOLTIP"); document.getElementById("legal-notice").innerHTML = OSRM.loc("GUI_LEGAL_NOTICE"); - - document.getElementById('input-source-name').value = OSRM.DEFAULTS.ONLOAD_SOURCE; - document.getElementById('input-target-name').value = OSRM.DEFAULTS.ONLOAD_TARGET; }, // show/hide main-gui @@ -66,15 +100,9 @@ toggleMain: function() { document.getElementById('main-wrapper').style.left=-OSRM.GUI.width+"px"; } - // execute after animation - if( OSRM.Browser.FF3==-1 && OSRM.Browser.IE6_9==-1 ) { - document.getElementById('main-wrapper').addEventListener("transitionend", OSRM.GUI.onMainTransitionEnd, false); - document.getElementById('main-wrapper').addEventListener("webkitTransitionEnd", OSRM.GUI.onMainTransitionEnd, false); - document.getElementById('main-wrapper').addEventListener("oTransitionEnd", OSRM.GUI.onMainTransitionEnd, false); - document.getElementById('main-wrapper').addEventListener("MSTransitionEnd", OSRM.GUI.onMainTransitionEnd, false); - } else { + // execute after animation (old browser support) + if( OSRM.Browser.FF3!=-1 || OSRM.Browser.IE6_9!=-1 ) OSRM.GUI.onMainTransitionEnd(); - } }, // do stuff after main-gui animation finished @@ -98,6 +126,12 @@ toggleOptions: function() { } else { document.getElementById('options-box').style.visibility="visible"; } +}, + +// clear output area +clearResults: function() { + document.getElementById('information-box').innerHTML = ""; + document.getElementById('information-box-header').innerHTML = ""; } -}; \ No newline at end of file +}; diff --git a/WebContent/OSRM.Geocoder.js b/WebContent/OSRM.Geocoder.js index 47f18e00d..d7825a92d 100644 --- a/WebContent/OSRM.Geocoder.js +++ b/WebContent/OSRM.Geocoder.js @@ -43,7 +43,7 @@ call: function(marker_id, query) { } //build request for geocoder - var call = OSRM.DEFAULTS.HOST_GEOCODER_URL + "?format=json" + OSRM.DEFAULTS.GEOCODER_BOUNDS + "&q=" + query; + var call = OSRM.DEFAULTS.HOST_GEOCODER_URL + "?format=json" + OSRM.DEFAULTS.GEOCODER_BOUNDS + "&accept-language="+OSRM.DEFAULTS.LANGUAGE+"&q=" + query; OSRM.JSONP.call( call, OSRM.Geocoder._showResults, OSRM.Geocoder._showResults_Timeout, OSRM.DEFAULTS.JSONP_TIMEOUT, "geocoder_"+marker_id, {marker_id:marker_id,query:query} ); }, @@ -60,7 +60,8 @@ _onclickResult: function(marker_id, lat, lon) { OSRM.G.markers.route[index].show(); OSRM.G.markers.route[index].centerView(); - OSRM.Routing.getRoute(); + if( OSRM.G.markers.route.length > 1 ) + OSRM.Routing.getRoute(); }, @@ -76,9 +77,14 @@ _showResults: function(response, parameters) { return; } + // show first result + OSRM.Geocoder._onclickResult(parameters.marker_id, response[0].lat, response[0].lon); + if( OSRM.G.markers.route.length > 1 ) // if a route is displayed, we don't need to show other possible geocoding results + return; + // show possible results for input var html = ""; - html += ''; + html += '
'; for(var i=0; i < response.length; i++){ var result = response[i]; @@ -97,23 +103,27 @@ _showResults: function(response, parameters) { } html += '
'; - document.getElementById('information-box-headline').innerHTML = OSRM.loc("SEARCH_RESULTS")+":"; + document.getElementById('information-box-header').innerHTML = + "
"+OSRM.loc("SEARCH_RESULTS")+"
" + + "
(found "+response.length+" results)"+"
"; document.getElementById('information-box').innerHTML = html; - - OSRM.Geocoder._onclickResult(parameters.marker_id, response[0].lat, response[0].lon); }, _showResults_Empty: function(parameters) { - document.getElementById('information-box-headline').innerHTML = OSRM.loc("SEARCH_RESULTS")+":"; + document.getElementById('information-box-header').innerHTML = + "
"+OSRM.loc("SEARCH_RESULTS")+"
" + + "
(found 0 results)"+"
"; if(parameters.marker_id == OSRM.C.SOURCE_LABEL) - document.getElementById('information-box').innerHTML = "

"+OSRM.loc("NO_RESULTS_FOUND_SOURCE")+": "+parameters.query +".

"; + document.getElementById('information-box').innerHTML = "

"+OSRM.loc("NO_RESULTS_FOUND_SOURCE")+": "+parameters.query +"
"; else if(parameters.marker_id == OSRM.C.TARGET_LABEL) - document.getElementById('information-box').innerHTML = "

"+OSRM.loc("NO_RESULTS_FOUND_TARGET")+": "+parameters.query +".

"; + document.getElementById('information-box').innerHTML = "

"+OSRM.loc("NO_RESULTS_FOUND_TARGET")+": "+parameters.query +"
"; else - document.getElementById('information-box').innerHTML = "

"+OSRM.loc("NO_RESULTS_FOUND")+": "+parameters.query +".

"; + document.getElementById('information-box').innerHTML = "

"+OSRM.loc("NO_RESULTS_FOUND")+": "+parameters.query +"
"; }, _showResults_Timeout: function() { - document.getElementById('information-box-headline').innerHTML = OSRM.loc("SEARCH_RESULTS")+":"; - document.getElementById('information-box').innerHTML = "

"+OSRM.loc("TIMED_OUT")+".

"; + document.getElementById('information-box-header').innerHTML = + "

"+OSRM.loc("SEARCH_RESULTS")+"
" + + "
(found 0 results)"+"
"; + document.getElementById('information-box').innerHTML = "
"+OSRM.loc("TIMED_OUT")+"
"; }, @@ -122,9 +132,9 @@ _showResults_Timeout: function() { //update geo coordinates in input boxes updateLocation: function(marker_id) { if (marker_id == OSRM.C.SOURCE_LABEL && OSRM.G.markers.hasSource()) { - document.getElementById("input-source-name").value = OSRM.G.markers.route[0].getLat().toFixed(6) + ", " + OSRM.G.markers.route[0].getLng().toFixed(6); + document.getElementById("gui-input-source").value = OSRM.G.markers.route[0].getLat().toFixed(6) + ", " + OSRM.G.markers.route[0].getLng().toFixed(6); } else if (marker_id == OSRM.C.TARGET_LABEL && OSRM.G.markers.hasTarget()) { - document.getElementById("input-target-name").value = OSRM.G.markers.route[OSRM.G.markers.route.length-1].getLat().toFixed(6) + ", " + OSRM.G.markers.route[OSRM.G.markers.route.length-1].getLng().toFixed(6); + document.getElementById("gui-input-target").value = OSRM.G.markers.route[OSRM.G.markers.route.length-1].getLat().toFixed(6) + ", " + OSRM.G.markers.route[OSRM.G.markers.route.length-1].getLng().toFixed(6); } }, @@ -144,7 +154,7 @@ updateAddress: function(marker_id, do_fallback_to_lat_lng) { } else return; - var call = OSRM.DEFAULTS.HOST_REVERSE_GEOCODER_URL + "?format=json" + "&lat=" + lat + "&lon=" + lng; + var call = OSRM.DEFAULTS.HOST_REVERSE_GEOCODER_URL + "?format=json" + "&accept-language="+OSRM.DEFAULTS.LANGUAGE + "&lat=" + lat + "&lon=" + lng; OSRM.JSONP.call( call, OSRM.Geocoder._showReverseResults, OSRM.Geocoder._showReverseResults_Timeout, OSRM.DEFAULTS.JSONP_TIMEOUT, "reverse_geocoder_"+marker_id, {marker_id:marker_id, do_fallback: do_fallback_to_lat_lng} ); }, @@ -192,9 +202,9 @@ _showReverseResults: function(response, parameters) { // add result to DOM if(parameters.marker_id == OSRM.C.SOURCE_LABEL && OSRM.G.markers.hasSource() ) - document.getElementById("input-source-name").value = address; + document.getElementById("gui-input-source").value = address; else if(parameters.marker_id == OSRM.C.TARGET_LABEL && OSRM.G.markers.hasTarget() ) - document.getElementById("input-target-name").value = address; + document.getElementById("gui-input-target").value = address; }, _showReverseResults_Timeout: function(response, parameters) { if(!parameters.do_fallback) @@ -203,4 +213,4 @@ _showReverseResults_Timeout: function(response, parameters) { OSRM.Geocoder.updateLocation(parameters.marker_id); } -}; \ No newline at end of file +}; diff --git a/WebContent/OSRM.Map.js b/WebContent/OSRM.Map.js index 1031f3f0a..f53874d59 100644 --- a/WebContent/OSRM.Map.js +++ b/WebContent/OSRM.Map.js @@ -121,6 +121,8 @@ init: function() { // initial map position and zoom var position = new L.LatLng( OSRM.DEFAULTS.ONLOAD_LATITUDE, OSRM.DEFAULTS.ONLOAD_LONGITUDE); OSRM.G.map.setViewUI( position, OSRM.DEFAULTS.ZOOM_LEVEL); + if (navigator.geolocation && document.URL.indexOf("file://") == -1) + navigator.geolocation.getCurrentPosition(OSRM.Map.geolocationResponse); // map events OSRM.G.map.on('zoomend', OSRM.Map.zoomed ); @@ -146,6 +148,10 @@ click: function(e) { OSRM.G.markers.route[index].show(); OSRM.G.markers.route[index].centerView( OSRM.G.map.getZoom() ); OSRM.Routing.getRoute(); - } + } +}, +geolocationResponse: function(response) { + var latlng = new L.LatLng(response.coords.latitude, response.coords.longitude); + OSRM.G.map.setViewUI(latlng, OSRM.DEFAULTS.ZOOM_LEVEL ); } }; \ No newline at end of file diff --git a/WebContent/OSRM.Markers.js b/WebContent/OSRM.Markers.js index 7be1db99b..dd309ab4b 100644 --- a/WebContent/OSRM.Markers.js +++ b/WebContent/OSRM.Markers.js @@ -90,6 +90,7 @@ onClick: function(e) { OSRM.Routing.getRoute(); OSRM.G.markers.highlight.hide(); + OSRM.G.markers.dragger.hide(); }, onDrag: function(e) { this.parent.setPosition( e.target.getLatLng() ); @@ -109,7 +110,9 @@ onDragStart: function(e) { } if( this.parent != OSRM.G.markers.highlight) - OSRM.G.markers.highlight.hide(); + OSRM.G.markers.highlight.hide(); + if( this.parent != OSRM.G.markers.dragger) + OSRM.G.markers.dragger.hide(); if (OSRM.G.route.isShown()) OSRM.G.route.showOldRoute(); }, @@ -118,14 +121,14 @@ onDragEnd: function(e) { this.switchIcon(this.options.baseicon); this.parent.setPosition( e.target.getLatLng() ); - OSRM.Routing.getRoute(); if (OSRM.G.route.isShown()) { + OSRM.Routing.getRoute(); OSRM.G.route.hideOldRoute(); OSRM.G.route.hideUnnamedRoute(); - } - - if(OSRM.G.route.isShown()==false) + } else { OSRM.Geocoder.updateAddress(this.parent.label); + OSRM.GUI.clearResults(); + } }, toString: function() { return "OSRM.RouteMarker: \""+this.label+"\", "+this.position+")"; @@ -175,8 +178,8 @@ removeAll: function() { for(var i=0; iKIT - Geocoder by OSM", +// geocoder +"SEARCH_RESULTS": "Suchergebnisse", +"TIMED_OUT": "Zeitüberschreitung", +"NO_RESULTS_FOUND": "Keine Ergebnisse gefunden", +"NO_RESULTS_FOUND_SOURCE": "Keine Ergebnisse gefunden für Start", +"NO_RESULTS_FOUND_TARGET": "Keine Ergebnisse gefunden für Ziel", +// routing +"ROUTE_DESCRIPTION": "Routenbeschreibung", +"GET_LINK_TO_ROUTE": "Generiere Link", +"GENERATE_LINK_TO_ROUTE": "Warte auf Antwort", +"LINK_TO_ROUTE_TIMEOUT": "nicht möglich", +"GPX_FILE": "GPX Datei", +"DISTANCE": "Distanz", +"DURATION": "Dauer", +"YOUR_ROUTE_IS_BEING_COMPUTED": "Ihre Route wird berechnet", +"NO_ROUTE_FOUND": "Keine Route hierher möglich", +// directions +"N": "Norden", +"O": "Ost", +"S": "Süden", +"W": "Westen", +"NE": "Nordost", +"SE": "Südost", +"SW": "Südwest", +"NW": "Nordwest", +// driving directions +"DIRECTION_0":"Unbekannte Anweisung[ auf %s]", +"DIRECTION_1":"Links abbiegen[ auf %s]", +"DIRECTION_2":"Rechts abbiegen[ auf %s]", +"DIRECTION_3":"Wenden[ auf %s]", +"DIRECTION_4":"Fahren Sie Richtung %s", +"DIRECTION_5":"Geradeaus weiterfahren[ auf %s]", +"DIRECTION_6":"Leicht links abbiegen[ auf %s]", +"DIRECTION_7":"Leicht rechts abbiegen[ auf %s]", +"DIRECTION_8":"Scharf links abbiegen[ auf %s]", +"DIRECTION_9":"Scharf rechts abbiegen[ auf %s]", +"DIRECTION_10":"In den Kreisverkehr einfahren und bei erster Möglichkeit[ in Richtung %s] verlassen", +"DIRECTION_11":"In den Kreisverkehr einfahren und bei zweiter Möglichkeit[ in Richtung %s] verlassen", +"DIRECTION_12":"In den Kreisverkehr einfahren und bei dritter Möglichkeit[ in Richtung %s] verlassen", +"DIRECTION_13":"In den Kreisverkehr einfahren und bei vierter Möglichkeit[ in Richtung %s] verlassen", +"DIRECTION_14":"In den Kreisverkehr einfahren und bei fünfter Möglichkeit[ in Richtung %s] verlassen", +"DIRECTION_15":"In den Kreisverkehr einfahren und bei sechster Möglichkeit[ in Richtung %s] verlassen", +"DIRECTION_16":"In den Kreisverkehr einfahren und bei siebter Möglichkeit[ in Richtung %s] verlassen", +"DIRECTION_17":"In den Kreisverkehr einfahren und bei achter Möglichkeit[ in Richtung %s] verlassen", +"DIRECTION_18":"In den Kreisverkehr einfahren und bei neunter Möglichkeit[ in Richtung %s] verlassen", +"DIRECTION_19":"In den Kreisverkehr einfahren und bei zehnter Möglichkeit[ in Richtung %s] verlassen", +"DIRECTION_20":"In den Kreisverkehr einfahren und bei einer der vielen Möglichkeiten[ in Richtung %s] verlassen", +"DIRECTION_21":"Sie haben Ihr Ziel erreicht" +}; + +// set GUI language on load +OSRM.Localization.change("de"); \ No newline at end of file diff --git a/WebContent/OSRM.Localization.js b/WebContent/localization/OSRM.Locale.en.js similarity index 50% rename from WebContent/OSRM.Localization.js rename to WebContent/localization/OSRM.Locale.en.js index ffe7ec9ec..86331ad33 100644 --- a/WebContent/OSRM.Localization.js +++ b/WebContent/localization/OSRM.Locale.en.js @@ -16,70 +16,9 @@ or see http://www.gnu.org/licenses/agpl.txt. */ // OSRM localization -// [basic localization options] +// [English language support] -OSRM.Localization = { - -// if existing, return localized string -> English string -> input string -translate: function(text) { - if( OSRM.Localization[OSRM.DEFAULTS.LANGUAGE][text] ) - return OSRM.Localization[OSRM.DEFAULTS.LANGUAGE][text]; - else if( OSRM.Localization["en"][text] ) - return OSRM.Localization["en"][text]; - else - return text; -} -}; - -// shorter call to translate function -OSRM.loc = OSRM.Localization.translate; - - -// German language support -OSRM.Localization["de"] = { -//gui -"OPEN_JOSM": "JOSM", -"OPEN_OSMBUGS": "OSM Bugs", -"GUI_START": "Start", -"GUI_END": "Ziel", -"GUI_RESET": "Reset", -"GUI_SEARCH": "Zeigen", -"GUI_REVERSE": "Umdrehen", -"GUI_OPTIONS": "Kartenwerkzeuge", -"GUI_HIGHLIGHT_UNNAMED_ROADS": "Unbenannte Straßen hervorheben", -"GUI_START_TOOLTIP": "Startposition eingeben", -"GUI_END_TOOLTIP": "Zielposition eingeben", -"GUI_LEGAL_NOTICE": "GUI2 v"+OSRM.VERSION+" "+OSRM.DATE+" - OSRM hosting by KIT - Geocoder by OSM", -// geocoder -"SEARCH_RESULTS": "Suchergebnisse", -"TIMED_OUT": "Zeitüberschreitung", -"NO_RESULTS_FOUND": "Keine Ergebnisse gefunden", -"NO_RESULTS_FOUND_SOURCE": "Keine Ergebnisse gefunden für Start", -"NO_RESULTS_FOUND_TARGET": "Keine Ergebnisse gefunden für Ziel", -// routing -"ROUTE_DESCRIPTION": "Routenbeschreibung", -"GET_LINK_TO_ROUTE": "Generiere Link", -"GENERATE_LINK_TO_ROUTE": "Warte auf Antwort", -"LINK_TO_ROUTE_TIMEOUT": "nicht möglich", -"GPX_FILE": "GPX Datei", -"DISTANCE": "Distanz", -"DURATION": "Dauer", -"YOUR_ROUTE_IS_BEING_COMPUTED": "Ihre Route wird berechnet", -"NO_ROUTE_FOUND": "Keine Route hierher möglich", -// directions -"N": "Norden", -"O": "Ost", -"S": "Süden", -"W": "Westen", -"NO": "Nordost", -"SO": "Südost", -"SW": "Südwest", -"NW": "Nordwest" -}; - - -// English language support OSRM.Localization["en"] = { //gui "OPEN_JOSM": "JOSM", @@ -118,5 +57,31 @@ OSRM.Localization["en"] = { "NE": "northeast", "SE": "southeast", "SW": "southwest", -"NW": "northwest" -}; \ No newline at end of file +"NW": "northwest", +// driving directions +"DIRECTION_0":"Unknown instruction[ on %s]", +"DIRECTION_1":"Turn left[ on %s]", +"DIRECTION_2":"Turn right[ on %s]", +"DIRECTION_3":"U-Turn[ on %s]", +"DIRECTION_4":"Head %s", +"DIRECTION_5":"Continue[ on %s]", +"DIRECTION_6":"Turn slight left[ on %s]", +"DIRECTION_7":"Turn slight right[ on %s]", +"DIRECTION_8":"Turn sharp left[ on %s]", +"DIRECTION_9":"Turn sharp right[ on %s]", +"DIRECTION_10":"Enter roundabout and leave at first exit[ on %s]", +"DIRECTION_11":"Enter roundabout and leave at second exit[ on %s]", +"DIRECTION_12":"Enter roundabout and leave at third exit[ on %s]", +"DIRECTION_13":"Enter roundabout and leave at fourth exit[ on %s]", +"DIRECTION_14":"Enter roundabout and leave at fifth exit[ on %s]", +"DIRECTION_15":"Enter roundabout and leave at sixth exit[ on %s]", +"DIRECTION_16":"Enter roundabout and leave at seventh exit[ on %s]", +"DIRECTION_17":"Enter roundabout and leave at eighth exit[ on %s]", +"DIRECTION_18":"Enter roundabout and leave at nineth exit[ on %s]", +"DIRECTION_19":"Enter roundabout and leave at tenth exit[ on %s]", +"DIRECTION_20":"Enter roundabout and leave at one of the too many exits[ on %s]", +"DIRECTION_21":"You have reached your destination" +}; + +//set GUI language on load +OSRM.Localization.change("en"); \ No newline at end of file diff --git a/WebContent/localization/OSRM.Localization.js b/WebContent/localization/OSRM.Localization.js new file mode 100644 index 000000000..af6021a43 --- /dev/null +++ b/WebContent/localization/OSRM.Localization.js @@ -0,0 +1,89 @@ +/* +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. +*/ + +// OSRM localization +// [basic localization options] + + +OSRM.Localization = { + +supported_languages: [ {display_name:"en", encoding:"en"}, + {display_name:"de", encoding:"de"} +], + +// initialize localization +init: function() { + // create dropdown menu + var select = document.createElement('select'); + select.id = "gui-language-toggle"; + select.className = "top-left-button"; + select.onchange = function() { OSRM.Localization.change(this.value); }; + + // fill dropdown menu + for(var i=0, size=OSRM.Localization.supported_languages.length; i 1) + OSRM.Routing.getRoute(); + else if(OSRM.G.markers.route.length > 0 && document.getElementById('information-box').innerHTML != "" ) { + OSRM.Geocoder.call( OSRM.C.SOURCE_LABEL, document.getElementById("gui-input-source").value ); + OSRM.Geocoder.call( OSRM.C.TARGET_LABEL, document.getElementById("gui-input-target").value ); + } else { + OSRM.Geocoder.updateAddress(OSRM.C.SOURCE_LABEL, false); + OSRM.Geocoder.updateAddress(OSRM.C.TARGET_LABEL, false); + document.getElementById('information-box').innerHTML = ""; + document.getElementById('information-box-header').innerHTML = ""; + } + } else { + var script = document.createElement('script'); + script.type = 'text/javascript'; + script.src = "localization/OSRM.Locale."+language+".js"; + document.head.appendChild(script); + } +}, + +// if existing, return localized string -> English string -> input string +translate: function(text) { + if( OSRM.Localization[OSRM.DEFAULTS.LANGUAGE] && OSRM.Localization[OSRM.DEFAULTS.LANGUAGE][text] ) + return OSRM.Localization[OSRM.DEFAULTS.LANGUAGE][text]; + else if( OSRM.Localization["en"] && OSRM.Localization["en"][text] ) + return OSRM.Localization["en"][text]; + else + return text; +} +}; + +// shorter call to translate function +OSRM.loc = OSRM.Localization.translate; \ No newline at end of file diff --git a/WebContent/main.css b/WebContent/main.css index 31c9ec175..02f695a1c 100644 --- a/WebContent/main.css +++ b/WebContent/main.css @@ -18,25 +18,19 @@ or see http://www.gnu.org/licenses/agpl.txt. /* OSRM CSS styles */ -/* map -> fullscreen */ -body { +/* fullscreen map */ +html, body { padding: 0; margin: 0; -} -html, body, #map { height: 100%; } #map { + height: 100%; z-index: 0; } -/* styles for gui */ -.vquad -{ - height:10px; -} - +/* general styles for gui boxes */ .gui-wrapper { position:absolute; @@ -63,11 +57,13 @@ html, body, #map { padding:5px; } + +/* styles for specific gui boxes */ #main-wrapper { width:410px; - height:95%; top:5px; + bottom:25px; left:5px; } #main-input @@ -78,10 +74,9 @@ html, body, #map { #main-output { width:390px; - top:220px; + top:220px; /* main-input.height+2*gui-box.margin+2*gui-box.padding */ bottom:0px; } - #blob-wrapper { left:-5px; @@ -96,79 +91,79 @@ html, body, #map { -webkit-border-bottom-left-radius:0px; visibility:hidden; } -#blob-input +#blob-content { - width:26px; - height:26px; + width:16px; + height:16px; border-top-left-radius:0px; border-bottom-left-radius:0px; -moz-border-radius-topleft:0px; -moz-border-radius-bottomleft:0px; -webkit-border-top-left-radius:0px; -webkit-border-bottom-left-radius:0px; - padding:0px; } -.main-toggle-out -{ - cursor:pointer; - position:absolute; - right:5px; - top:5px; - width:16px; - height:16px; - background-image:url("images/cancel.png"); -} -.main-toggle-out:hover -{ - background-image:url("images/cancel_hover.png"); -} -.main-toggle-out:active -{ - background-image:url("images/cancel_active.png"); -} -.main-toggle-in -{ - cursor:pointer; - position:absolute; - right:5px; - top:5px; - width:16px; - height:16px; - background-image:url("images/restore.png"); -} -.main-toggle-in:hover -{ - background-image:url("images/restore_hover.png"); -} -.main-toggle-in:active -{ - background-image:url("images/restore_active.png"); -} -.main-options +/* styles for main-input areas */ +#input-mask-header { - position:relative; - font-size:10px; -} -.main-options-left-box -{ - position:absolute; - left:5px; + left:0px; + right:0px; top:0px; + height:50px; + background-repeat:no-repeat; + background-position:center; + background-image:url("images/osrm-logo.png"); } -.main-options-right-box +#input-mask { - position:absolute; - right:5px; - top:5px; + margin:3px; } -#options-toggle +#input-mask-options +{ + margin:3px; +} + + +/* styles for main-input input-mask-header */ +#gui-language-toggle +{ + border: 0px; + text-decoration:none; +} +.top-left-button +{ + float:left; +} +.top-right-button +{ + float:right; +} + + +/* styles for main-input input-mask */ +.input-marker +{ + display:table-row; +} +.input-marker > div +{ + padding-bottom:4px; +} +.input-box +{ + width: 250px; + padding-right: 2px; +} + + +/* styles for main-input input-mask-options */ +#gui-options-toggle { cursor:pointer; color:#0000ff } -#options-toggle:hover +#gui-options-toggle:hover { color:#ff0000 } @@ -177,111 +172,92 @@ html, body, #map { visibility:hidden; } -#osrm-logo -{ - display: block; - margin-left: auto; - margin-right: auto; - width: 192px; - height: 50px; - text-align:center; - vertical-align: middle; -} -.input-box +/* styles for main-output areas */ +#information-box-header { - width: 250px; + margin:5px; + height:60px; } - - -.full -{ - width:100%; -} -.right -{ - text-align:right; -} -.center -{ - text-align:center; -} - #information-box { position:absolute; - bottom:15px; - top:60px; + bottom:20px; + top:65px; width:380px; - font-size:12px; overflow:auto; margin:5px; } - -.route-summary +#legal-notice { - font-size: 12px; + position:absolute; + right:0px; + bottom:0px; + margin:5px; } -#gpx-link + + +/* styles for information-box-header */ +.header-title +{ + font-weight:bold; + margin-bottom:10px; +} +.header-content +{ + font-weight:normal; +} +.result-link { color:#0000ff; text-decoration:none; cursor:pointer; } -#gpx-link:hover +.result-link:hover { color:#ff0000; } + + +/* style for information-box table (search results, driving directions) */ .results-table { border-spacing:0px; + width:100%; } .results-odd { - background-color: #FAF3E9; //#ffffff; + background-color: #FFFDE3; } .results-even { - background-color: #F2DE9C; //#ffffe0; + background-color: #FFF9BB; } .result-counter { text-align:right; - vertical-align: top; - width:30px; + vertical-align:top; font-weight:bold; - padding-left:5px; - padding-right:5px; - padding-top:1px; - padding-bottom:1px; + padding:1px 5px 1px 5px; } .result-items { text-align:left; vertical-align: middle; width:100%; - padding-left:1px; - padding-right:1px; - padding-top:1px; - padding-bottom:1px; + padding:1px; } -.result-direction +.result-directions { - width:30px; - padding-left:1px; - padding-right:1px; - padding-top:1px; - padding-bottom:1px; + text-align:left; + vertical-align: middle; + padding:1px 5px 1px 5px; } .result-distance { text-align:right; - vertical-align: middle; - width:30px; - padding-left:1px; - padding-right:1px; - padding-top:1px; - padding-bottom:1px; + vertical-align: middle; + padding:1px 1px 1px 5px; } .result-item { @@ -292,18 +268,135 @@ html, body, #map { { color:#ff0000 } - -#legal-notice +.no-results { - position:absolute; - right:0px; - bottom:0px; - padding:5px; - font-size:10px; + text-align:center; + margin:28px; +} + + +/* buttons */ +.button +{ + cursor:pointer; + padding:2px 10px 2px 10px; + border-radius:5px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + background-color:#EEEEEE; + border:1px solid #999999; + color:#333333; + text-decoration:none; + font-size:9px; + outline-style:none; + vertical-align:1px; +} +.button:hover +{ + background-color:#F9F9F9; + color:#000000; +} +.button:active +{ + background-color:#F4F4F4; + color:#FF0000; +} + + +/* iconic buttons */ +.iconic-button +{ + cursor:pointer; + width:16px; + height:16px; + background-repeat:no-repeat; + background-position:center; +} + +#gui-toggle-out +{ + background-image:url("images/cancel.png"); +} +#gui-toggle-out:hover +{ + background-image:url("images/cancel_hover.png"); +} +#gui-toggle-out:active +{ + background-image:url("images/cancel_active.png"); +} + +#gui-toggle-in +{ + background-image:url("images/restore.png"); +} +#gui-toggle-in:hover +{ + background-image:url("images/restore_hover.png"); +} +#gui-toggle-in:active +{ + background-image:url("images/restore_active.png"); +} + +#gui-printer +{ + background-image:url("images/printer.png"); +} +#gui-printer:hover +{ + background-image:url("images/printer_hover.png"); +} +#gui-printer:active +{ + background-image:url("images/printer_active.png"); +} + +.delete-marker +{ + background-image:url("images/cancel.png"); + visibility:hidden; +} +.delete-marker:hover +{ + background-image:url("images/cancel_hover.png"); +} +.delete-marker:active +{ + background-image:url("images/cancel_active.png"); +} + + +/* fonts */ +.base-font { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 12px; + font-weight: normal; +} +.big-font { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 14px; + font-weight: bold; +} +.medium-font { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10.5px; + font-weight: normal; +} +.small-font { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 9px; + font-weight: normal; } /* utility styles (defined above buttons, so that buttons retain cursor:pointer)*/ +.quad +{ + min-width:10px; + min-height:10px; +} + .not-selectable { cursor:default; @@ -322,49 +415,31 @@ html, body, #map { user-select: text; } - -/* buttons */ -.button +.checkbox-label { - cursor:pointer; - padding:2px 10px 2px 10px; - border-radius:5px; - -moz-border-radius:5px; - background-color:#EEEEEE; - border:1px solid #999999; - color:#333333; - text-decoration:none; - font-size:11px; - outline-style:none; -} -.button:hover -{ - background-color:#F9F9F9; - color:#000000; -} -.button:active -{ - background-color:#F4F4F4; - color:#FF0000; + vertical-align:2px; } - -.delete-marker +.full { - cursor:pointer; - position:absolute; - right:5px; - top:3px; - width:16px; - height:16px; - background-image:url("images/cancel.png"); - visibility:hidden; + display:table; + width:100%; } -.delete-marker:hover +.left { - background-image:url("images/cancel_hover.png"); + display:table-cell; + text-align:left; + vertical-align:middle; } -.delete-marker:active +.right { - background-image:url("images/cancel_active.png"); + display:table-cell; + text-align:right; + vertical-align:middle; +} +.center +{ + display:table-cell; + text-align:center; + vertical-align:middle; } \ No newline at end of file diff --git a/WebContent/main.html b/WebContent/main.html index 5d6787d60..97c631324 100644 --- a/WebContent/main.html +++ b/WebContent/main.html @@ -30,7 +30,7 @@ or see http://www.gnu.org/licenses/agpl.txt. - + @@ -64,78 +64,90 @@ or see http://www.gnu.org/licenses/agpl.txt. - + + - +
-
-
+
+
-
+
-
-
- - +
+ +
+
+
+ + +
+ - - - - - - - - - - - - -
Start:
- -
Zeigen
Ende:
- -
Zeigen
- +
+
+
Start:
+
+
+ +
+
+
Ende:
+
+
+ +
+
+ +
+ -
- - - - - -
Reset Umdrehen
- +
+ + +
+
+ +
+ - Kartenwerkzeuge -
- - Unbenannte Straßen hervorheben - - - JOSM - OSM Bugs - +
+ + + Kartenwerkzeuge + + +
+
+ + Unbenannte Straßen hervorheben +
+
+ JOSM + OSM Bugs +
+
-
-
+
+
- +
diff --git a/WebContent/main.js b/WebContent/main.js index 76471caa7..35393c7b0 100644 --- a/WebContent/main.js +++ b/WebContent/main.js @@ -18,55 +18,72 @@ or see http://www.gnu.org/licenses/agpl.txt. // OSRM initialization // [initialization, image prefetching] -// will hold the Leaflet map object -OSRM.GLOBALS.map = null; - // onload initialization routine OSRM.init = function() { OSRM.prefetchImages(); OSRM.prefetchIcons(); + OSRM.Localization.init(); OSRM.GUI.init(); OSRM.Map.init(); - OSRM.Routing.init(); + //OSRM.Printing.init(); + OSRM.Routing.init(); // check if the URL contains some GET parameter, e.g. for showing a route - OSRM.checkURL(); + OSRM.parseParameters(); }; // prefetch images -OSRM.GLOBALS.images = Array(); +OSRM.GLOBALS.images = {}; OSRM.prefetchImages = function() { - var images = [ 'images/marker-source.png', - 'images/marker-target.png', - 'images/marker-via.png', - 'images/marker-highlight.png', - 'images/marker-source-drag.png', - 'images/marker-target-drag.png', - 'images/marker-via-drag.png', - 'images/marker-highlight-drag.png', - 'images/marker-drag.png', - 'images/cancel.png', - 'images/cancel_active.png', - 'images/cancel_hover.png', - 'images/restore.png', - 'images/restore_active.png', - 'images/restore_hover.png' - ]; - - for(var i=0; i]+(>|$)/g ,""); // discard tags + params.destination_name = decodeURI(name_val[1]).replace(/<\/?[^>]+(>|$)/g ,""); // discard tags } else if(name_val[0] == 'z') { - zoom = name_val[1]; - if( zoom<0 || zoom > 18) + var zoom_level = Number(name_val[1]); + if( zoom_level<0 || zoom_level > 18) return; + params.zoom = zoom; } else if(name_val[0] == 'center') { var coordinates = unescape(name_val[1]).split(','); if(coordinates.length!=2 || !OSRM.Utils.isLatitude(coordinates[0]) || !OSRM.Utils.isLongitude(coordinates[1]) ) return; - center = new L.LatLng( coordinates[0], coordinates[1]); + params.center = new L.LatLng( coordinates[0], coordinates[1]); } } // case 1: destination given - if( destination != undefined ) { - var index = OSRM.G.markers.setTarget( e.latlng ); - if( destination_name == null ) - OSRM.Geocoder.updateAddress( OSRM.C.TARGET_LABEL, OSRM.C.DO_FALLBACK_TO_LAT_LNG ); + if( params.destination ) { + var index = OSRM.G.markers.setTarget( params.destination.latlng ); + if( params.destination_name ) + document.getElementById("gui-input-target").value = params.destination_name; else - document.getElementById("input-target-name").value = destination_name; + OSRM.Geocoder.updateAddress( OSRM.C.TARGET_LABEL, OSRM.C.DO_FALLBACK_TO_LAT_LNG ); OSRM.G.markers.route[index].show(); OSRM.G.markers.route[index].centerView(); return; } // case 2: locations given - if( positions != []) { + if( params.positions ) { // draw via points - if( positions.length > 0) { - OSRM.G.markers.setSource( positions[0] ); + if( params.positions.length > 0 ) { + OSRM.G.markers.setSource( params.positions[0] ); OSRM.Geocoder.updateAddress( OSRM.C.SOURCE_LABEL, OSRM.C.DO_FALLBACK_TO_LAT_LNG ); } - if(positions.length > 1) { - OSRM.G.markers.setTarget( positions[positions.length-1] ); + if( params.positions.length > 1 ) { + OSRM.G.markers.setTarget( params.positions[params.positions.length-1] ); OSRM.Geocoder.updateAddress( OSRM.C.TARGET_LABEL, OSRM.C.DO_FALLBACK_TO_LAT_LNG ); } - for(var i=1; i'; + + route_desc += ''; + route_desc += ''; + route_desc += ""; + + route_desc += ''; + route_desc += ''; + route_desc += response.route_instructions[i][0]; + if( i == 0 ) + route_desc += ' ' + OSRM.loc( response.route_instructions[i][6] ); + if( response.route_instructions[i][1] != "" ) { + route_desc += ' on '; + route_desc += '' + response.route_instructions[i][1] + ''; + } + //route_desc += ' for '; + route_desc += ''; + route_desc += ""; + + route_desc += ''; + if( i != response.route_instructions.length-1 ) + route_desc += ''+OSRM.Utils.metersToDistance(response.route_instructions[i][2])+''; + route_desc += ""; + + route_desc += ""; + } + + route_desc += ''; + headline = ""; + headline += OSRM.loc("ROUTE_DESCRIPTION")+":
"; + headline += '
'; + headline += "" + + OSRM.loc("DISTANCE")+": " + OSRM.Utils.metersToDistance(response.route_summary.total_distance) + + "
" + + OSRM.loc("DURATION")+": " + OSRM.Utils.secondsToTime(response.route_summary.total_time) + + "
"; + headline += '
'; + + var output = ""; + output += route_desc; + + OSRM.printwindow.document.getElementById('description-headline').innerHTML = headline; + OSRM.printwindow.document.getElementById('description').innerHTML = output; +}, + +// react to click +print: function() { + OSRM.printwindow = window.open("printing/printing.html","","width=400,height=300,left=100,top=100,dependent=yes,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes"); + OSRM.printwindow.addEventListener("DOMContentLoaded", OSRM.Printing.windowLoaded, false); +} + +}; \ No newline at end of file diff --git a/WebContent/printing/printing.css b/WebContent/printing/printing.css new file mode 100644 index 000000000..a1ae513f0 --- /dev/null +++ b/WebContent/printing/printing.css @@ -0,0 +1,105 @@ +/* +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. +*/ + +/* OSRM CSS styles for printing*/ + + +/* printer button */ +.printer-inactive +{ + cursor:pointer; + width:16px; + height:16px; + background-image:url("../images/printer_inactive.png"); +} +.printer +{ + cursor:pointer; + width:16px; + height:16px; + background-image:url("../images/printer.png"); +} +.printer:hover +{ + background-image:url("../images/printer_hover.png"); +} +.printer:active +{ + background-image:url("../images/printer_active.png"); +} + +/* route summary */ +.route-summary +{ + font-size: 12px; +} + +/* route description box */ +#description +{ + position:absolute; + bottom:15px; + top:60px; + width:380px; + font-size:12px; + margin:5px; +} +.results-table +{ + border-spacing:0px; +} +.results-odd +{ + background-color: #FAF3E9; //#ffffff; +} +.results-even +{ + background-color: #F2DE9C; //#ffffe0; +} +.result-items +{ + text-align:left; + vertical-align: middle; + width:100%; + padding-left:1px; + padding-right:1px; + padding-top:1px; + padding-bottom:1px; +} +.result-direction +{ + width:30px; + padding-left:1px; + padding-right:1px; + padding-top:1px; + padding-bottom:1px; +} +.result-distance +{ + text-align:right; + vertical-align: middle; + width:30px; + padding-left:1px; + padding-right:1px; + padding-top:1px; + padding-bottom:1px; +} +.result-item +{ + cursor:pointer; + color:#000000 +} diff --git a/WebContent/printing/printing.html b/WebContent/printing/printing.html new file mode 100644 index 000000000..5580e15da --- /dev/null +++ b/WebContent/printing/printing.html @@ -0,0 +1,91 @@ + + + + + + + + + + + + +OSRM Website + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+ + + diff --git a/WebContent/routing/OSRM.Routing.js b/WebContent/routing/OSRM.Routing.js index b7283054b..20ff60519 100644 --- a/WebContent/routing/OSRM.Routing.js +++ b/WebContent/routing/OSRM.Routing.js @@ -71,6 +71,7 @@ showRoute: function(response) { if(!response) return; + OSRM.G.response = response; OSRM.G.via_points = response.via_points.slice(0); console.log(OSRM.G.via_points); if(response.status == 207) { @@ -146,4 +147,4 @@ _snapRoute: function() { OSRM.Geocoder.updateAddress(OSRM.C.TARGET_LABEL); } -}; \ No newline at end of file +}; diff --git a/WebContent/routing/OSRM.RoutingDescription.js b/WebContent/routing/OSRM.RoutingDescription.js index 19911efb1..0ec55e785 100644 --- a/WebContent/routing/OSRM.RoutingDescription.js +++ b/WebContent/routing/OSRM.RoutingDescription.js @@ -30,16 +30,15 @@ onClickRouteDescription: function(geometry_index) { OSRM.G.markers.highlight.centerView(OSRM.DEFAULTS.HIGHLIGHT_ZOOM_LEVEL); }, onClickCreateShortcut: function(src){ - src += '&z='+ OSRM.G.map.getZoom() + '¢er=' + OSRM.G.map.getCenter().lat + ',' + OSRM.G.map.getCenter().lng; + src += '&z='+ OSRM.G.map.getZoom() + '¢er=' + OSRM.G.map.getCenter().lat.toFixed(6) + ',' + OSRM.G.map.getCenter().lng.toFixed(6); OSRM.JSONP.call(OSRM.DEFAULTS.HOST_SHORTENER_URL+src, OSRM.RoutingDescription.showRouteLink, OSRM.RoutingDescription.showRouteLink_TimeOut, OSRM.DEFAULTS.JSONP_TIMEOUT, 'shortener'); - document.getElementById('route-prelink').innerHTML = '['+OSRM.loc("GENERATE_LINK_TO_ROUTE")+']'; + document.getElementById('route-link').innerHTML = '['+OSRM.loc("GENERATE_LINK_TO_ROUTE")+']'; }, showRouteLink: function(response){ - document.getElementById('route-prelink').innerHTML = '['+response.ShortURL+']'; -// document.getElementById('route-prelink').innerHTML = '[]'; + document.getElementById('route-link').innerHTML = '['+response.ShortURL+']'; }, showRouteLink_TimeOut: function(){ - document.getElementById('route-prelink').innerHTML = '['+OSRM.loc("LINK_TO_ROUTE_TIMEOUT")+']'; + document.getElementById('route-link').innerHTML = '['+OSRM.loc("LINK_TO_ROUTE_TIMEOUT")+']'; }, // handling of routing description @@ -47,17 +46,17 @@ show: function(response) { // compute query string var query_string = '?rebuild=1'; for(var i=0; i'+OSRM.loc("GET_LINK_TO_ROUTE")+']'; + var route_link ='['+OSRM.loc("GET_LINK_TO_ROUTE")+']'; // create GPX link - var gpx_link = '['+OSRM.loc("GPX_FILE")+']'; + var gpx_link = '['+OSRM.loc("GPX_FILE")+']'; // create route description var route_desc = ""; - route_desc += ''; + route_desc += '
'; for(var i=0; i < response.route_instructions.length; i++){ //odd or even ? @@ -67,20 +66,21 @@ show: function(response) { route_desc += ''; route_desc += '"; route_desc += '"; route_desc += '"; } - - route_desc += '
'; - route_desc += ''; + route_desc += ''; route_desc += "'; - route_desc += ''; - route_desc += response.route_instructions[i][0]; + route_desc += '
'; + + // build route description if( i == 0 ) - route_desc += ' ' + OSRM.loc( response.route_instructions[i][6] ); - if( response.route_instructions[i][1] != "" ) { - route_desc += ' on '; - route_desc += '' + response.route_instructions[i][1] + ''; - } - //route_desc += ' for '; - route_desc += ''; + route_desc += OSRM.loc("DIRECTION_"+OSRM.RoutingDescription.mapDirectionId(response.route_instructions[i][0])).replace(/%s/, OSRM.loc(response.route_instructions[i][6]) ); + else if( response.route_instructions[i][1] != "" ) + route_desc += OSRM.loc("DIRECTION_"+OSRM.RoutingDescription.mapDirectionId(response.route_instructions[i][0])).replace(/\[(.*)\]/,"$1").replace(/%s/, response.route_instructions[i][1]); + else + route_desc += OSRM.loc("DIRECTION_"+OSRM.RoutingDescription.mapDirectionId(response.route_instructions[i][0])).replace(/\[(.*)\]/,""); + + route_desc += '
'; route_desc += "
'; @@ -90,85 +90,93 @@ show: function(response) { route_desc += "
'; - headline = ""; - headline += OSRM.loc("ROUTE_DESCRIPTION")+":
"; - headline += '
'; - headline += "" - + OSRM.loc("DISTANCE")+": " + OSRM.Utils.metersToDistance(response.route_summary.total_distance) - + "
" - + OSRM.loc("DURATION")+": " + OSRM.Utils.secondsToTime(response.route_summary.total_time) - + "
"; - headline += '
'; - headline += '
'+route_link+'
'+gpx_link+'
'; + route_desc += ''; + + // create header + header = + '
' + OSRM.loc("ROUTE_DESCRIPTION") + '
' + + '
' + + '
' + + '
' + OSRM.loc("DISTANCE")+": " + OSRM.Utils.metersToDistance(response.route_summary.total_distance) + '
' + + '
' + OSRM.loc("DURATION")+": " + OSRM.Utils.secondsToTime(response.route_summary.total_time) + '
' + + '
' + + '
' + + '' + + '
' + gpx_link + '
' + + '
' + + '
'; - var output = ""; - output += route_desc; - - document.getElementById('information-box-headline').innerHTML = headline; - document.getElementById('information-box').innerHTML = output; + // update DOM + document.getElementById('information-box-header').innerHTML = header; + document.getElementById('information-box').innerHTML = route_desc; }, // simple description showSimple: function(response) { - headline = OSRM.loc("ROUTE_DESCRIPTION")+":
"; - headline += "" - + OSRM.loc("DISTANCE")+": " + OSRM.Utils.metersToDistance(response.route_summary.total_distance) - + "
" - + OSRM.loc("DURATION")+": " + OSRM.Utils.secondsToTime(response.route_summary.total_time) - + "
"; - headline += '

'; + header = + '
' + OSRM.loc("ROUTE_DESCRIPTION") + '
' + + '
' + + '
' + + '
' + OSRM.loc("DISTANCE")+": " + OSRM.Utils.metersToDistance(response.route_summary.total_distance) + '
' + + '
' + OSRM.loc("DURATION")+": " + OSRM.Utils.secondsToTime(response.route_summary.total_time) + '
' + + '
' + + '
' + + '
' + + '
'; - document.getElementById('information-box-headline').innerHTML = headline; - document.getElementById('information-box').innerHTML = "

"+OSRM.loc("YOUR_ROUTE_IS_BEING_COMPUTED")+".

"; + // update DOM + document.getElementById('information-box-header').innerHTML = header; + document.getElementById('information-box').innerHTML = "

"+OSRM.loc("YOUR_ROUTE_IS_BEING_COMPUTED")+"
"; }, // no description showNA: function( display_text ) { - headline = OSRM.loc("ROUTE_DESCRIPTION")+":
"; - headline += "" - + OSRM.loc("DISTANCE")+": N/A" - + "
" - + OSRM.loc("DURATION")+": N/A" - + "
"; - headline += '

'; + header = + '
' + OSRM.loc("ROUTE_DESCRIPTION") + '
' + + '
' + + '
' + + '
' + OSRM.loc("DISTANCE")+": N/A" + '
' + + '
' + OSRM.loc("DURATION")+": N/A" + '
' + + '
' + + '
' + + '
' + + '
'; - document.getElementById('information-box-headline').innerHTML = headline; - document.getElementById('information-box').innerHTML = "

"+display_text+".

"; + // update DOM + document.getElementById('information-box-header').innerHTML = header; + document.getElementById('information-box').innerHTML = "

"+display_text+"
"; }, -// map driving instructions to icons -// [TODO: language-safe implementation] -getDirectionIcon: function(name) { +//map driving instruction ids to internal ids +mapDirectionId: function(name) { var directions = { - "Turn left":"turn-left.png", - "Turn right":"turn-right.png", - "U-Turn":"u-turn.png", - "Head":"continue.png", - "Continue":"continue.png", - "Turn slight left":"slight-left.png", - "Turn slight right":"slight-right.png", - "Turn sharp left":"sharp-left.png", - "Turn sharp right":"sharp-right.png", - "Enter roundabout and leave at first exit":"round-about.png", - "Enter roundabout and leave at second exit":"round-about.png", - "Enter roundabout and leave at third exit":"round-about.png", - "Enter roundabout and leave at fourth exit":"round-about.png", - "Enter roundabout and leave at fifth exit":"round-about.png", - "Enter roundabout and leave at sixth exit":"round-about.png", - "Enter roundabout and leave at seventh exit":"round-about.png", - "Enter roundabout and leave at eighth exit":"round-about.png", - "Enter roundabout and leave at nineth exit":"round-about.png", - "Enter roundabout and leave at tenth exit":"round-about.png", - "Enter roundabout and leave at one of the too many exit":"round-about.png", - "You have reached your destination":"target.png" + "Turn left":1, + "Turn right":2, + "U-Turn":3, + "Head":4, + "Continue":5, + "Turn slight left":6, + "Turn slight right":7, + "Turn sharp left":8, + "Turn sharp right":9, + "Enter roundabout and leave at first exit":10, + "Enter roundabout and leave at second exit":11, + "Enter roundabout and leave at third exit":12, + "Enter roundabout and leave at fourth exit":13, + "Enter roundabout and leave at fifth exit":14, + "Enter roundabout and leave at sixth exit":15, + "Enter roundabout and leave at seventh exit":16, + "Enter roundabout and leave at eighth exit":17, + "Enter roundabout and leave at nineth exit":18, + "Enter roundabout and leave at tenth exit":19, + "Enter roundabout and leave at one of the too many exit":20, + "You have reached your destination":21 }; if( directions[name] ) return directions[name]; else - return "default.png"; + return 0; } }; \ No newline at end of file diff --git a/WebContent/routing/OSRM.RoutingGUI.js b/WebContent/routing/OSRM.RoutingGUI.js index da0f20289..f687fb49e 100644 --- a/WebContent/routing/OSRM.RoutingGUI.js +++ b/WebContent/routing/OSRM.RoutingGUI.js @@ -23,15 +23,15 @@ OSRM.RoutingGUI = { // click: button "reset" resetRouting: function() { - document.getElementById('input-source-name').value = ""; - document.getElementById('input-target-name').value = ""; + document.getElementById('gui-input-source').value = ""; + document.getElementById('gui-input-target').value = ""; OSRM.G.route.hideAll(); OSRM.G.markers.removeAll(); OSRM.G.markers.highlight.hide(); document.getElementById('information-box').innerHTML = ""; - document.getElementById('information-box-headline').innerHTML = ""; + document.getElementById('information-box-header').innerHTML = ""; OSRM.JSONP.reset(); }, @@ -39,26 +39,26 @@ resetRouting: function() { // click: button "reverse" reverseRouting: function() { // invert input boxes - var tmp = document.getElementById("input-source-name").value; - document.getElementById("input-source-name").value = document.getElementById("input-target-name").value; - document.getElementById("input-target-name").value = tmp; + var tmp = document.getElementById("gui-input-source").value; + document.getElementById("gui-input-source").value = document.getElementById("gui-input-target").value; + document.getElementById("gui-input-target").value = tmp; // invert route OSRM.G.markers.route.reverse(); if(OSRM.G.markers.route.length == 1) { if(OSRM.G.markers.route[0].label == OSRM.C.TARGET_LABEL) { OSRM.G.markers.route[0].label = OSRM.C.SOURCE_LABEL; - OSRM.G.markers.route[0].marker.setIcon( new L.Icon('images/marker-source.png') ); + OSRM.G.markers.route[0].marker.setIcon( OSRM.G.icons['marker-source'] ); } else if(OSRM.G.markers.route[0].label == OSRM.C.SOURCE_LABEL) { OSRM.G.markers.route[0].label = OSRM.C.TARGET_LABEL; - OSRM.G.markers.route[0].marker.setIcon( new L.Icon('images/marker-target.png') ); + OSRM.G.markers.route[0].marker.setIcon( OSRM.G.icons['marker-target'] ); } } else if(OSRM.G.markers.route.length > 1){ OSRM.G.markers.route[0].label = OSRM.C.SOURCE_LABEL; - OSRM.G.markers.route[0].marker.setIcon( new L.Icon('images/marker-source.png') ); + OSRM.G.markers.route[0].marker.setIcon( OSRM.G.icons['marker-source'] ); OSRM.G.markers.route[OSRM.G.markers.route.length-1].label = OSRM.C.TARGET_LABEL; - OSRM.G.markers.route[OSRM.G.markers.route.length-1].marker.setIcon( new L.Icon('images/marker-target.png') ); + OSRM.G.markers.route[OSRM.G.markers.route.length-1].marker.setIcon( OSRM.G.icons['marker-target'] ); } // recompute route @@ -67,7 +67,7 @@ reverseRouting: function() { OSRM.G.markers.highlight.hide(); } else { document.getElementById('information-box').innerHTML = ""; - document.getElementById('information-box-headline').innerHTML = ""; + document.getElementById('information-box-header').innerHTML = ""; } }, @@ -82,13 +82,12 @@ showMarker: function(marker_id) { OSRM.G.markers.route[OSRM.G.markers.route.length-1].centerView(); }, - -// changed: any inputbox (is called when return is pressed [after] or focus is lost [before]) +// changed: any inputbox (is called when enter is pressed [after] or focus is lost [before]) inputChanged: function(marker_id) { if( marker_id == OSRM.C.SOURCE_LABEL) - OSRM.Geocoder.call(OSRM.C.SOURCE_LABEL, document.getElementById('input-source-name').value); + OSRM.Geocoder.call(OSRM.C.SOURCE_LABEL, document.getElementById('gui-input-source').value); else if( marker_id == OSRM.C.TARGET_LABEL) - OSRM.Geocoder.call(OSRM.C.TARGET_LABEL, document.getElementById('input-target-name').value); + OSRM.Geocoder.call(OSRM.C.TARGET_LABEL, document.getElementById('gui-input-target').value); }, // click: button "open JOSM"