fixed bug with geocoder

This commit is contained in:
DennisSchiefer 2012-08-23 14:45:38 +01:00
parent 80d51683d4
commit f2cd56b329

View File

@ -80,7 +80,7 @@ _showResults: function(response, parameters) {
} }
// filter/sort inputs // filter/sort inputs
var filtered_response_temp = []; // filter unwanted results var filtered_response_temp = []; // filter results
for(var i=0, iEnd=response.length; i < iEnd; i++){ for(var i=0, iEnd=response.length; i < iEnd; i++){
var result = response[i]; var result = response[i];
if( OSRM.Geocoder._filterResult( result ) ) if( OSRM.Geocoder._filterResult( result ) )
@ -90,19 +90,19 @@ _showResults: function(response, parameters) {
if(filtered_response_temp.length == 0) { // stop if no results remain if(filtered_response_temp.length == 0) { // stop if no results remain
OSRM.Geocoder._showResults_Empty(parameters); OSRM.Geocoder._showResults_Empty(parameters);
return; return;
} }
filtered_response_temp.sort( OSRM.Geocoder._compareResults ); // sort results filtered_response_temp.sort( OSRM.Geocoder._compareResults ); // rank results
filtered_response_temp.sort( OSRM.Geocoder._compareLocations ); // remove duplicate locations (stable sort -> retain highest ranked) filtered_response_temp.sort( OSRM.Geocoder._compareLocations ); // remove duplicate locations (stable sort -> retain highest ranked)
var filtered_response = []; var filtered_response = [];
filtered_response.push( filtered_response_temp[0] ); filtered_response.push( filtered_response_temp[0] );
for(var i=filtered_response_temp.length-1, iEnd = 0; i>iEnd; i--) { for(var i=1, iEnd = filtered_response_temp.length; i<iEnd; i++) {
var prev_result = response[i-1]; var prev_result = filtered_response_temp[i-1];
var result = response[i]; var result = filtered_response_temp[i];
if( result.lat != prev_result.lat || result.lon != prev_result.lon ) { if( result.lat != prev_result.lat || result.lon != prev_result.lon ) {
filtered_response.push( result ); filtered_response.push( result );
} }
} }
filtered_response.sort( OSRM.Geocoder._compareResults ); filtered_response.sort( OSRM.Geocoder._compareResults ); // rank results again
// show first result // show first result
OSRM.Geocoder._onclickResult(parameters.marker_id, filtered_response[0].lat, filtered_response[0].lon); OSRM.Geocoder._onclickResult(parameters.marker_id, filtered_response[0].lat, filtered_response[0].lon);