From 8d243b437de0cea7b9c43cd0eb40257e5dc0cac6 Mon Sep 17 00:00:00 2001
From: Alex Reisner <alex@alexreisner.com>
Date: Mon, 2 May 2011 18:01:11 -0400
Subject: [PATCH] Add map_link_url method to all supported Lookups.

---
 lib/geocoder/lookups/base.rb   | 10 ++++++++++
 lib/geocoder/lookups/bing.rb   |  4 ++++
 lib/geocoder/lookups/google.rb |  4 ++++
 lib/geocoder/lookups/yahoo.rb  |  4 ++++
 lib/geocoder/lookups/yandex.rb |  4 ++++
 5 files changed, 26 insertions(+)

diff --git a/lib/geocoder/lookups/base.rb b/lib/geocoder/lookups/base.rb
index 8441efe1..3960df8b 100644
--- a/lib/geocoder/lookups/base.rb
+++ b/lib/geocoder/lookups/base.rb
@@ -39,6 +39,16 @@ module Geocoder
         results(query, reverse).map{ |r| result_class.new(r) }
       end
 
+      ##
+      # Return the URL for a map of the given coordinates.
+      #
+      # Not necessarily implemented by all subclasses as only some lookups
+      # also provide maps.
+      #
+      def map_link_url(coordinates)
+        nil
+      end
+
 
       private # -------------------------------------------------------------
 
diff --git a/lib/geocoder/lookups/bing.rb b/lib/geocoder/lookups/bing.rb
index 843a413b..cba04c30 100644
--- a/lib/geocoder/lookups/bing.rb
+++ b/lib/geocoder/lookups/bing.rb
@@ -4,6 +4,10 @@ require "geocoder/results/bing"
 module Geocoder::Lookup
   class Bing < Base
 
+    def map_link_url(coordinates)
+      "http://www.bing.com/maps/default.aspx?cp=#{coordinates.join('~')}"
+    end
+
     private # ---------------------------------------------------------------
 
     def results(query, reverse = false)
diff --git a/lib/geocoder/lookups/google.rb b/lib/geocoder/lookups/google.rb
index 711ec67e..4d61dd6c 100644
--- a/lib/geocoder/lookups/google.rb
+++ b/lib/geocoder/lookups/google.rb
@@ -4,6 +4,10 @@ require "geocoder/results/google"
 module Geocoder::Lookup
   class Google < Base
 
+    def map_link_url(coordinates)
+      "http://maps.google.com/maps?q=#{coordinates.join(',')}"
+    end
+
     private # ---------------------------------------------------------------
 
     def results(query, reverse = false)
diff --git a/lib/geocoder/lookups/yahoo.rb b/lib/geocoder/lookups/yahoo.rb
index d035503a..1ce523ec 100644
--- a/lib/geocoder/lookups/yahoo.rb
+++ b/lib/geocoder/lookups/yahoo.rb
@@ -4,6 +4,10 @@ require "geocoder/results/yahoo"
 module Geocoder::Lookup
   class Yahoo < Base
 
+    def map_link_url(coordinates)
+      "http://maps.yahoo.com/#lat=#{coordinates[0]}&lon=#{coordinates[1]}"
+    end
+
     private # ---------------------------------------------------------------
 
     def results(query, reverse = false)
diff --git a/lib/geocoder/lookups/yandex.rb b/lib/geocoder/lookups/yandex.rb
index 25c31015..452d2769 100644
--- a/lib/geocoder/lookups/yandex.rb
+++ b/lib/geocoder/lookups/yandex.rb
@@ -4,6 +4,10 @@ require "geocoder/results/yandex"
 module Geocoder::Lookup
   class Yandex < Base
 
+    def map_link_url(coordinates)
+      "http://maps.yandex.ru/?ll=#{coordinates.reverse.join(',')}"
+    end
+
     private # ---------------------------------------------------------------
 
     def results(query, reverse = false)
-- 
GitLab