aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/Geocode/Google.pm
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2018-02-12 17:11:58 +0000
committerMatthew Somerville <matthew-github@dracos.co.uk>2018-02-12 17:11:58 +0000
commit236f615c046dfcfadbba376b735ef7a352a79ef9 (patch)
tree5dd6c4d18e892cce26e90285c6a7f2d7eab4e9e7 /perllib/FixMyStreet/Geocode/Google.pm
parent5260280b60a1192f87987c34a78fce63fc5c1d26 (diff)
parent7ec0d3f67766764967a8bb92099c582f8bd6aaf5 (diff)
Merge branch 'banes-improvements-grab-bag'
Diffstat (limited to 'perllib/FixMyStreet/Geocode/Google.pm')
-rw-r--r--perllib/FixMyStreet/Geocode/Google.pm16
1 files changed, 12 insertions, 4 deletions
diff --git a/perllib/FixMyStreet/Geocode/Google.pm b/perllib/FixMyStreet/Geocode/Google.pm
index e64d02c4c..162101953 100644
--- a/perllib/FixMyStreet/Geocode/Google.pm
+++ b/perllib/FixMyStreet/Geocode/Google.pm
@@ -8,6 +8,7 @@ package FixMyStreet::Geocode::Google;
use strict;
use Utils;
+use URI::Escape;
# string STRING CONTEXT
# Looks up on Google Maps API, and caches, a user-inputted location.
@@ -19,11 +20,13 @@ sub string {
my $params = $c->cobrand->disambiguate_location($s);
+ my $components = "";
+
# 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.
- if ($c->cobrand->country eq 'GB' && $s !~ /, *UK/ && $s !~ /united *kingdom$/) {
- $s .= ', UK';
+ # think we are in the UK for some locations so we explicitly tell Google
+ # the country.
+ if ($c->cobrand->country eq 'GB') {
+ $components = "country:GB";
}
$s = FixMyStreet::Geocode::escape($s);
@@ -37,8 +40,13 @@ sub string {
} elsif ($params->{country}) {
$url .= '&region=' . $params->{country};
}
+ if ($params->{components}) {
+ $components .= ($components ? '|' : '') . URI::Escape::uri_escape_utf8($params->{components});
+ }
$url .= '&language=' . $params->{lang} if $params->{lang};
+ $url .= '&components=' . $components if $components;
+
my $args = 'key=' . FixMyStreet->config('GOOGLE_MAPS_API_KEY');
my $js = FixMyStreet::Geocode::cache('google', $url, $args, qr/"status"\s*:\s*"(OVER_QUERY_LIMIT|REQUEST_DENIED|INVALID_REQUEST|UNKNOWN_ERROR)"/);
if (!$js) {