diff --git a/includes/openlayers_geocoder.admin.inc b/includes/openlayers_geocoder.admin.inc
new file mode 100644
index 0000000..44004a2
--- /dev/null
+++ b/includes/openlayers_geocoder.admin.inc
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * Global settings form.
+ *
+ * @ingroup forms
+ * @see system_settings_form()
+ */
+function openlayers_geocoder_admin_settings() {
+  $form = array();
+
+  $form['openlayers_geocoder_google_domain'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Preferred Google domain'),
+    '#default_value' => variable_get('openlayers_geocoder_google_domain', 'http://maps.google.com'),
+    '#description' => t('The geocoder results can be made more relevant to a specific country, if that country has its own Google Maps domain. For example, changing this to !domain, addresses in Germany will take precedence (without excluding global ones).', array('!domain' => 'http://maps.google.de')),
+  );
+
+  return system_settings_form($form);
+}
\ No newline at end of file
diff --git a/openlayers_geocoder.module b/openlayers_geocoder.module
index 1b87ed8..8126ba6 100644
--- a/openlayers_geocoder.module
+++ b/openlayers_geocoder.module
@@ -7,7 +7,6 @@
  * @ingroup openlayers
  */
 
-define('GOOGLE_GEOCODER_URL', 'http://maps.google.com/maps/api/geocode/json?');
 define('GOOGLE_GEOCODER_STATUS_OK', 'OK');
 define('OPENLAYERS_GEOCODER_POSITION_ABOVE', -10);
 define('OPENLAYERS_GEOCODER_POSITION_BELOW', +10);
@@ -36,6 +35,14 @@ function openlayers_geocoder_menu() {
     'access arguments' => array('access content'),
     'type' => MENU_CALLBACK,
   );
+  $items['admin/settings/openlayers_geocoder'] = array(
+    'title' => 'OpenLayers Geocoder',
+    'description' => 'Settings for the OpenLayers Geocoder.',
+    'access arguments' => array('administer site configuration'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('openlayers_geocoder_admin_settings'),
+    'file' => 'includes/openlayers_geocoder.admin.inc',
+  );
   return $items;
 }
 
@@ -321,17 +328,17 @@ function openlayers_geocoder_response($address) {
   // The region code, specified as a ccTLD ("top-level domain") two-character value.
   // $args['region'] = '';
 
-  $query = http_build_query($args, '', '&');
+  $query = variable_get('openlayers_geocoder_google_domain', 'http://maps.google.com') .'/maps/api/geocode/json?'. http_build_query($args, '', '&');
   
   if (function_exists("curl_init")) {
     $ch = curl_init();
-    curl_setopt($ch, CURLOPT_URL, GOOGLE_GEOCODER_URL . $query);
+    curl_setopt($ch, CURLOPT_URL, $query);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     $result = curl_exec($ch);
     curl_close($ch);  
   }
   else {
-    $result = file_get_contents(GOOGLE_GEOCODER_URL . $query);
+    $result = file_get_contents($query);
   }
   
   $response = json_decode($result);
