From 2ad919c9708f1ac8b61a959391a21da5c53eebcc Mon Sep 17 00:00:00 2001 From: DennisSchiefer Date: Wed, 13 Jun 2012 10:29:30 +0100 Subject: [PATCH] added geocoder filtering and using Nominatim icons --- WebContent/base/OSRM.Geocoder.js | 66 ++++++++++++++++++++++++++++---- WebContent/main.css | 6 ++- 2 files changed, 64 insertions(+), 8 deletions(-) diff --git a/WebContent/base/OSRM.Geocoder.js b/WebContent/base/OSRM.Geocoder.js index 45c2659c5..e3353aaab 100644 --- a/WebContent/base/OSRM.Geocoder.js +++ b/WebContent/base/OSRM.Geocoder.js @@ -85,22 +85,39 @@ _showResults: function(response, parameters) { if( OSRM.G.markers.route.length > 1 ) // if a route is displayed, we don't need to show other possible geocoding results return; + // filter/sort inputs + var filtered_response = []; + for(var i=0; i < response.length; i++){ + var result = response[i]; + if( OSRM.Geocoder._filterResult( result ) ) + continue; + filtered_response.push( result ); + } + filtered_response.sort( OSRM.Geocoder._compareResults ); + // show possible results for input var html = ""; html += ''; - for(var i=0; i < response.length; i++){ - var result = response[i]; - + for(var i=0; i < filtered_response.length; i++){ + var result = filtered_response[i]; + //odd or even ? var rowstyle='results-body-odd'; if(i%2==0) { rowstyle='results-body-even'; } html += ''; - html += ''; +// html += ''; + // optimally show Nominatim icons instead of numbers + if(!result.icon) + result.icon = "http://nominatim.openstreetmap.org/images/mapicons/poi_point_of_interest.glow.12.png"; + html += ''; html += '"; } @@ -108,8 +125,8 @@ _showResults: function(response, parameters) { document.getElementById('information-box-header').innerHTML = "
"+OSRM.loc("SEARCH_RESULTS")+"
" + - "
("+OSRM.loc("FOUND_X_RESULTS").replace(/%i/,response.length)+")
"; - "
(found "+response.length+" results)"+"
"; + "
("+OSRM.loc("FOUND_X_RESULTS").replace(/%i/,filtered_response.length)+")
"; + "
(found "+filtered_response.length+" results)"+"
"; document.getElementById('information-box').innerHTML = html; }, _showResults_Empty: function(parameters) { @@ -128,6 +145,41 @@ _showResults_Timeout: function() { "
"+OSRM.loc("SEARCH_RESULTS")+"
" + "
("+OSRM.loc("FOUND_X_RESULTS").replace(/%i/,0)+")
"; document.getElementById('information-box').innerHTML = "
"+OSRM.loc("TIMED_OUT")+"
"; +}, + + +// filter search results [false: result will not be displayed] +_filterResult: function(result) { + return false; +}, + + +// comparator for sorting results [higher weight: result will appear first] +_compare_class_weights: { + place: 9000, + highway: 8000, + boundary: 7000 +}, +_compare_type_weights: { + country: 13, + state: 12, + county: 11, + city: 10, + town: 9, + village: 8, + hamlet: 7, + suburb: 6, + locality: 5, + farm: 4 +}, +_compareResults: function(lhs, rhs) { + var class_values = OSRM.Geocoder._compare_class_weights; + var type_values = OSRM.Geocoder._compare_type_weights; + + var lhs_value = (-class_values[ lhs.class ] || 0) + (-type_values[ lhs.type ] || 0); + var rhs_value = (-class_values[ rhs.class ] || 0) + (-type_values[ rhs.type ] || 0); + + return (lhs_value - rhs_value); }, diff --git a/WebContent/main.css b/WebContent/main.css index 2b61e5071..5ecc05738 100644 --- a/WebContent/main.css +++ b/WebContent/main.css @@ -347,6 +347,10 @@ html, body { { color:#ff0000 } +.results-body-item-remark +{ + color:#999999 +} /* style for main-output information-box -> table (driving directions) */ @@ -666,5 +670,5 @@ input[type=checkbox], .small-font { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; - font-weight: normal; + font-weight: normal; } \ No newline at end of file
'+(i+1)+'.'+(i+1)+'.'; if(result.display_name){ - html += '
'+result.display_name+'
'; + html += '
'+result.display_name; + // optionally show osm_type, class, type + html += '
[osm_type: ' + result.osm_type + ', class: ' + result.class + ', type: ' + result.type + ']'; + html += '
'; } html += "