aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/Geocode/Bing.pm
diff options
context:
space:
mode:
authorStruan Donald <struan@exo.org.uk>2011-09-08 10:05:06 +0100
committerStruan Donald <struan@exo.org.uk>2011-09-08 10:05:06 +0100
commitb1bd589b2fc8075cab39679d23db2b7d285f8345 (patch)
tree933ce962203f846d6d53b53851b36949f921a869 /perllib/FixMyStreet/Geocode/Bing.pm
parentba9172907f5e41840cf5324cc335277bbd031ed2 (diff)
parent3423cfe5e16e9130a25238cd76de76ec2bf07c67 (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.pm32
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;