diff --git a/geocoder/geocoder.widget.inc b/geocoder/geocoder.widget.inc
index 30441a1..e7b6325 100644
--- a/geocoder/geocoder.widget.inc
+++ b/geocoder/geocoder.widget.inc
@@ -347,3 +347,21 @@ function geocoder_widget_parse_addressfield($field_item) {
   
   return $address;
 }
+
+/**
+ * Geocoder Widget - Parse a location field
+ */
+function geocoder_widget_parse_locationfield($field_item) {
+  $address = '';
+  if (!empty($field_item['name']))        $address .= $field_item['name'] . ',';
+  if (!empty($field_item['street']))      $address .= $field_item['street'] . ',';
+  if (!empty($field_item['additional']))  $address .= $field_item['additional'] . ',';
+  if (!empty($field_item['city']))        $address .= $field_item['city'] . ',';
+  if (!empty($field_item['province']))    $address .= $field_item['province'] . ',';
+  if (!empty($field_item['country']))     $address .= $field_item['country'] . ',';
+  if (!empty($field_item['postal_code'])) $address .= $field_item['postal_code'] . ',';
+  
+  $address = rtrim($address, ', ');
+
+  return $address;
+}
diff --git a/geocoder/plugins/geocoder_handler/google.inc b/geocoder/plugins/geocoder_handler/google.inc
index 4df2bcb..1e62de5 100755
--- a/geocoder/plugins/geocoder_handler/google.inc
+++ b/geocoder/plugins/geocoder_handler/google.inc
@@ -14,7 +14,7 @@ $plugin = array(
   'title' => t("Google Geocoder"),
   'description' => t('Geocodes via google geocoder'),
   'callback' => 'geocoder_google',
-  'field_types' => array('text', 'text_long', 'addressfield', 'text_with_summary', 'computed', 'taxonomy_term_reference'),
+  'field_types' => array('text', 'text_long', 'addressfield', 'location', 'text_with_summary', 'computed', 'taxonomy_term_reference'),
   'field_callback' => 'geocoder_google_field',
   'settings_callback' => 'geocoder_google_form',
   'terms_of_service' => 'http://code.google.com/apis/maps/documentation/geocoding/#Limits',
@@ -116,6 +116,10 @@ function geocoder_google_field($field, $field_item, $options = array()) {
     $address = geocoder_widget_parse_addressfield($field_item);
     return geocoder_google($address, $options);
   }
+  if ($field['type'] == 'location') {
+    $address = geocoder_widget_parse_locationfield($field_item);
+    return geocoder_google($address, $options);
+  }
   if ($field['type'] == 'taxonomy_term_reference') {
     $term = taxonomy_term_load($field_item['tid']);
     return geocoder_google($term->name);
diff --git a/geocoder/plugins/geocoder_handler/yahoo.inc b/geocoder/plugins/geocoder_handler/yahoo.inc
index c5cb788..902d722 100644
--- a/geocoder/plugins/geocoder_handler/yahoo.inc
+++ b/geocoder/plugins/geocoder_handler/yahoo.inc
@@ -14,7 +14,7 @@ $plugin = array(
   'title' => t("Yahoo Placefinder"),
   'description' => t('Geocodes via Yahoo Placefinder'),
   'callback' => 'geocoder_yahoo',
-  'field_types' => array('text', 'text_long', 'addressfield', 'text_with_summary', 'computed', 'taxonomy_term_reference'),
+  'field_types' => array('text', 'text_long', 'addressfield', 'location', 'text_with_summary', 'computed', 'taxonomy_term_reference'),
   'field_callback' => 'geocoder_yahoo_field',
   'terms_of_service' => 'http://developer.yahoo.com/geo/placefinder/',
 );
@@ -40,6 +40,10 @@ function geocoder_yahoo_field($field, $field_item) {
     $address = geocoder_widget_parse_addressfield($field_item);
     return geocoder_yahoo($address);
   }
+  if ($field['type'] == 'location') {
+    $address = geocoder_widget_parse_locationfield($field_item);
+    return geocoder_yahoo($address);
+  }
   if ($field['type'] == 'taxonomy_term_reference') {
     $term = taxonomy_term_load($field_item['tid']);
     return geocoder_yahoo($term->name);
diff --git a/geocoder/plugins/geocoder_handler/yandex.inc b/geocoder/plugins/geocoder_handler/yandex.inc
index 3cbb46a..00ffd73 100644
--- a/geocoder/plugins/geocoder_handler/yandex.inc
+++ b/geocoder/plugins/geocoder_handler/yandex.inc
@@ -14,7 +14,7 @@ $plugin = array(
   'title' => t("Yandex (Яндекс.Карт)"),
   'description' => t('Geocodes addresses via Yandex (Яндекс.Карт)'),
   'callback' => 'geocoder_yandex',
-  'field_types' => array('text','text_long','addressfield','text_with_summary','computed', 'taxonomy_term_reference'),
+  'field_types' => array('text','text_long','addressfield', 'location','text_with_summary','computed', 'taxonomy_term_reference'),
   'field_callback' => 'geocoder_yandex_field',
   'terms_of_service' => 'http://api.yandex.ru/maps/geocoder/doc/desc/concepts/About.xml',
 );
@@ -45,6 +45,10 @@ function geocoder_yandex_field($field, $field_item) {
     $address = geocoder_widget_parse_addressfield($field_item);
     return geocoder_yandex($address);
   }
+  if ($field['type'] == 'location') {
+    $address = geocoder_widget_parse_locationfield($field_item);
+    return geocoder_google($address);
+  }
   if ($field['type'] == 'taxonomy_term_reference') {
     $term = taxonomy_term_load($field_item['tid']);
     return geocoder_yandex($term->name);
