diff options
author | Struan Donald <struan@exo.org.uk> | 2011-05-24 13:14:45 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2011-05-24 13:14:45 +0100 |
commit | 7b0d984bd9607e5b7e12184f1d91bc52a0280417 (patch) | |
tree | 342d688dc4315a1821052111cd1bd45a3ac5c4f2 | |
parent | 3697d6efaa4c11908b2c051b1986a98643c199ac (diff) |
google maps don't seem to pay as much attention to region hinting as they once did so make sure we add UK on to the end.
also update tests to take into account changed results because of this.
-rw-r--r-- | perllib/FixMyStreet/Geocode.pm | 16 | ||||
-rwxr-xr-x | t/Page.t | 4 | ||||
-rw-r--r-- | t/app/controller/around.t | 13 |
3 files changed, 24 insertions, 9 deletions
diff --git a/perllib/FixMyStreet/Geocode.pm b/perllib/FixMyStreet/Geocode.pm index c06c3bb55..cbfa3c4e7 100644 --- a/perllib/FixMyStreet/Geocode.pm +++ b/perllib/FixMyStreet/Geocode.pm @@ -126,8 +126,20 @@ sub string { if (-s $cache_file) { $js = File::Slurp::read_file($cache_file); } else { - $url .= ',+UK' unless $url =~ /united\++kingdom$/ || $url =~ /uk$/i - || mySociety::Config::get('COUNTRY') ne 'GB'; + # For some reason adding gl=uk is no longer sufficient to make google + # think we are in the UK for some locations so we explictly add UK to + # the address. We do it here so as not to invalidate existing cache + # entries + if ( mySociety::Config::get('COUNTRY') eq 'GB' + && $url !~ /,\+UK/ + && $url !~ /united\++kingdom$/ ) + { + if ( $url =~ /&/ ) { + $url =~ s/&/,+UK&/; + } else { + $url .= ',+UK'; + } + } $url .= '&sensor=false&key=' . mySociety::Config::get('GOOGLE_MAPS_API_KEY'); $js = LWP::Simple::get($url); $js = encode_utf8($js) if utf8::is_utf8($js); @@ -43,8 +43,8 @@ sub test_geocode_string() { # geocode a straightforward string, expect success my ( $latitude, $longitude, $error ) = FixMyStreet::Geocode::string( 'Buckingham Palace', $q ); - is( $latitude, 51.5013639, 'example easting generated' ); - is( $longitude, -0.1418898, 'example northing generated' ); + is( $latitude, 51.4949261, 'example easting generated' ); + is( $longitude, -0.1461924, 'example northing generated' ); is( $error, undef, 'should not generate error for simple example' ); # expect a failure message for Northern Ireland diff --git a/t/app/controller/around.t b/t/app/controller/around.t index 069ec605a..12b26cec7 100644 --- a/t/app/controller/around.t +++ b/t/app/controller/around.t @@ -43,19 +43,22 @@ foreach my $test ( { pc => 'glenthorpe', errors => [], - pc_alternatives => [ # TODO - should filter out these non-UK addresses + pc_alternatives => [ 'Glenthorpe Crescent, Leeds LS9 7', 'Glenthorpe Rd, Merton, Greater London SM4 4', - 'Glenthorpe Ln, Katy, TX 77494, USA', - 'Glenthorpe Dr, Walnut, CA 91789, USA', 'Glenthorpe Ave, Leeds LS9 7', - 'Glenthorpe Ct, Katy, TX 77494, USA', + 'Glenthorne Rd, Hammersmith, Greater London W6 0', + 'Glenthorne Ave, Yeovil, Somerset BA21 4', + 'Glenthorne Rd, Kenwyn, Cornwall TR3 6', + 'Glenthorne Dr, Cheslyn Hay, Staffordshire WS6 7', + 'Glenthorne Gardens, Ilford, Greater London IG5 0', + 'Glenthorne Ave, Croydon, Greater London CR0 7', ], }, { pc => 'Glenthorpe Ct, Katy, TX 77494, USA', errors => - ['We had a problem with the supplied co-ordinates - outside the UK?'], + ['Sorry, we could not find that location.'], pc_alternatives => [], }, ) |