diff options
author | Struan Donald <struan@exo.org.uk> | 2011-09-08 10:05:06 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2011-09-08 10:05:06 +0100 |
commit | b1bd589b2fc8075cab39679d23db2b7d285f8345 (patch) | |
tree | 933ce962203f846d6d53b53851b36949f921a869 /perllib/FixMyStreet/Geocode/Bing.pm | |
parent | ba9172907f5e41840cf5324cc335277bbd031ed2 (diff) | |
parent | 3423cfe5e16e9130a25238cd76de76ec2bf07c67 (diff) |
Merge branch 'master' of ssh://git.mysociety.org/data/git/public/fixmystreet into open311-consumer
Conflicts:
web/css/core.css
web/js/fixmystreet.js
Diffstat (limited to 'perllib/FixMyStreet/Geocode/Bing.pm')
-rw-r--r-- | perllib/FixMyStreet/Geocode/Bing.pm | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/Geocode/Bing.pm b/perllib/FixMyStreet/Geocode/Bing.pm index 90d7f98bd..4e12a7a7f 100644 --- a/perllib/FixMyStreet/Geocode/Bing.pm +++ b/perllib/FixMyStreet/Geocode/Bing.pm @@ -64,4 +64,36 @@ sub string { return { error => $error }; } +sub reverse { + my ( $latitude, $longitude, $cache ) = @_; + + # Get nearest road-type thing from Bing + my $key = mySociety::Config::get('BING_MAPS_API_KEY', ''); + if ($key) { + my $url = "http://dev.virtualearth.net/REST/v1/Locations/$latitude,$longitude?c=en-GB&key=$key"; + my $j; + if ( $cache ) { + my $cache_dir = FixMyStreet->config('GEO_CACHE') . 'bing/'; + my $cache_file = $cache_dir . md5_hex($url); + + if (-s $cache_file) { + $j = File::Slurp::read_file($cache_file); + } else { + $j = LWP::Simple::get($url); + File::Path::mkpath($cache_dir); + File::Slurp::write_file($cache_file, $j) if $j; + } + } else { + $j = LWP::Simple::get($url); + } + + if ($j) { + $j = JSON->new->utf8->allow_nonref->decode($j); + return $j; + } + } + + return undef; +} + 1; |