diff -ruN geolocation.b2/modules/geolocation_googlemaps/geolocation_googlemaps_dynamic_formatter.js geolocation/modules/geolocation_googlemaps/geolocation_googlemaps_dynamic_formatter.js
--- geolocation.b2/modules/geolocation_googlemaps/geolocation_googlemaps_dynamic_formatter.js	1970-01-01 01:00:00.000000000 +0100
+++ geolocation/modules/geolocation_googlemaps/geolocation_googlemaps_dynamic_formatter.js	2011-10-24 23:35:40.000000000 +0200
@@ -0,0 +1,71 @@
+/**
+ * @file Javascript for Goole Map Dynamic API Formatter javascript code.
+ * 
+ * @author Lukasz Klimek http://www.klimek.ws
+ */
+(function($) {
+
+  Drupal.Geolocation = new Object();
+  Drupal.Geolocation.maps = new Array();
+  Drupal.Geolocation.markers = new Array();
+
+  Drupal.behaviors.geolocationDynamicMapFormatter = {
+
+    attach : function(context, settings) {
+
+      // Work on each map
+      $.each(settings.geolocation, function(i, mapDefaults) {
+
+        // Only make this once ;)
+        $("#geolocation-googlemaps-dynamic-" + i).once(
+            'geolocationDynamicMapFormatter',
+            function() {
+
+              lat = mapDefaults.position.lat;
+              lng = mapDefaults.position.lng;
+              latLng = new google.maps.LatLng(lat, lng);
+
+              var map_type;
+              switch (mapDefaults.settings.map_maptype) {
+                case 'satellite':
+                  map_type = google.maps.MapTypeId.SATELLITE;
+                  break;
+
+                case 'terrain':
+                  map_type = google.maps.MapTypeId.TERRAIN;
+                  break;
+
+                case 'hybrid':
+                  map_type = google.maps.MapTypeId.HYBRID;
+                  break;
+
+                default:
+                  map_type = google.maps.MapTypeId.ROADMAP;
+                  break;
+              }
+
+              myOptions = {
+                zoom : parseInt(mapDefaults.settings.map_zoomlevel) + 0,
+                center : latLng,
+                mapTypeId : map_type,
+                scrollwheel : true
+              };
+
+              // Create map
+              Drupal.Geolocation.maps[i] = new google.maps.Map(document
+                  .getElementById("geolocation-googlemaps-dynamic-" + i),
+                  myOptions);
+
+              // create and place marker
+              Drupal.Geolocation.markers[i] = new google.maps.Marker({
+                map : Drupal.Geolocation.maps[i],
+                draggable : false,
+                icon : mapDefaults.settings.marker_icon,
+                position : latLng
+              });
+
+            });
+      });
+    },
+  };
+}(jQuery));
diff -ruN geolocation.b2/modules/geolocation_googlemaps/geolocation_googlemaps.module geolocation/modules/geolocation_googlemaps/geolocation_googlemaps.module
--- geolocation.b2/modules/geolocation_googlemaps/geolocation_googlemaps.module	2011-10-24 19:08:02.000000000 +0200
+++ geolocation/modules/geolocation_googlemaps/geolocation_googlemaps.module	2011-10-24 23:48:01.188549723 +0200
@@ -21,6 +21,17 @@
         'map_maptype' => 'roadmap',
       ),
     ),
+    'geolocation_googlemaps_dynamic' => array(
+      'label' => t('Dynamic Google Map'),
+      'field types' => array('geolocation_latlng'),
+      'settings' => array(
+        'map_dimensions' => '300x300',
+        'map_zoomlevel' => '7',
+        'map_imageformat' => 'png8',
+        'map_maptype' => 'roadmap',
+        'marker_icon' => '',
+      ),
+    ),
   );
 }
 
@@ -28,7 +39,9 @@
  * Implements hook_field_formatter_settings_form().
  */
 function geolocation_googlemaps_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
+
   $display = $instance['display'][$view_mode];
+  $type = $display['type'];
   $settings = $display['settings'];
 
   $element = array();
@@ -42,7 +55,7 @@
     '#description' => t('Enter custom map dimensions, default is 300x300.'),
     '#default_value' => $settings['map_dimensions'],
   );
-  
+
   $element['marker_icon'] = array(
     '#type' => 'textfield',
     '#title' => t('Marker icon'),
@@ -50,19 +63,22 @@
     '#default_value' => $settings['marker_icon'],
   );
 
-  $element['map_imageformat'] = array(
-    '#type' => 'select',
-    '#title' => t('Image format'),
-    '#options' => array(
-      'png8' => '8-bit PNG (default)',
-      'png32' => '32-bit PNG',
-      'gif' => 'GIF',
-      'jpg' => 'JPEG',
-      'jpg-baseline' => 'JPEG (non-progressive)',
-    ),
-    '#description' => t('Choose an Image Format. jpg and jpg-baseline typically provide the smallest image size, though they do so through "lossy" compression which may degrade the image. gif, png8 and png32 provide lossless compression.'),
-    '#default_value' => $settings['map_imageformat'],
-  );
+  // image format is used only for static maps
+  if ($type == 'geolocation_googlemaps_static') {
+    $element['map_imageformat'] = array(
+      '#type' => 'select',
+      '#title' => t('Image format'),
+      '#options' => array(
+        'png8' => '8-bit PNG (default)',
+        'png32' => '32-bit PNG',
+        'gif' => 'GIF',
+        'jpg' => 'JPEG',
+        'jpg-baseline' => 'JPEG (non-progressive)',
+        ),
+      '#description' => t('Choose an Image Format. jpg and jpg-baseline typically provide the smallest image size, though they do so through "lossy" compression which may degrade the image. gif, png8 and png32 provide lossless compression.'),
+      '#default_value' => $settings['map_imageformat'],
+    );
+  }
 
   $element['map_maptype'] = array(
     '#type' => 'select',
@@ -114,11 +130,18 @@
 function geolocation_googlemaps_field_formatter_settings_summary($field, $instance, $view_mode) {
   $display = $instance['display'][$view_mode];
   $settings = $display['settings'];
+  $type = $display['type'];
+
+  $summary = '<strong>Map:</strong> '. $settings['map_dimensions'];
+
+  if ($type == 'geolocation_googlemaps_static') {
+    $summary .= ' ('. $settings['map_imageformat'] .')';
+  }
+  $summary .= '<br />';
 
-  $summary = '<strong>Map:</strong> '. $settings['map_dimensions'] .' ('. $settings['map_imageformat'] .')<br />';
   $summary .= '<strong>Type:</strong> '. $settings['map_maptype'] .'<br />';
   $summary .= '<strong>Zoom:</strong> '. $settings['map_zoomlevel'];
-  if ($settings['marker_icon']) {
+  if (!empty($settings['marker_icon'])) {
     $vars = array(
       'path' => $settings['marker_icon'],
     );
@@ -160,6 +183,54 @@
       }
       break;
 
+    case 'geolocation_googlemaps_dynamic':
+      foreach ($items as $delta => $item) {
+
+        $width = strtok($settings['map_dimensions'], 'x') . "px";
+        $height = strtok('') . "px";
+
+        $mapElement['googlemap'] = array(
+          '#prefix' => '<div id="geolocation-googlemaps-dynamic-'
+            . $delta . '" class="geolocation-map geolocation-googlemaps-dynamic" '
+            . ' style="width:' . htmlentities($width)
+            . ';height:' . htmlentities($height) . ';">',
+          '#suffix' => '</div>',
+        );
+
+        // Attach CSS and JS files via FAPI '#attached'.
+        $mapElement['googlemap']['#attached']['css'][] = drupal_get_path('module', 'geolocation_googlemaps') . '/geolocation_googlemaps.css';
+        $mapElement['googlemap']['#attached']['js'][] = array('data' => 'http://maps.google.com/maps/api/js?sensor=false', 'type' => 'external');
+        $mapElement['googlemap']['#attached']['js'][] = array('data' => 'http://www.google.com/jsapi', 'type' => 'external');
+        $mapElement['googlemap']['#attached']['js'][] = array(
+          'data' => drupal_get_path('module', 'geolocation_googlemaps') . '/geolocation_googlemaps_dynamic_formatter.js',
+          'type' => 'file',
+          'scope' => 'footer',
+        );
+
+        // Make defaults available as javascript settings. In JS files use:
+        // Drupal.settings.mapDefaults.lat
+
+        $position = array(
+          'lat' => $item['lat'],
+          'lng' => $item['lng'],
+        );
+
+        $data = array(
+          $delta => array (
+            "settings" => $settings,
+            "position" => $position
+          ),
+        );
+
+        $mapElement['googlemap']['#attached']['js'][] = array(
+          'data' => array('geolocation' => $data),
+          'type' => 'setting'
+        );
+
+        $element[$delta] = $mapElement;
+      }
+      break;
+
   }
   return $element;
 }
@@ -180,6 +251,7 @@
  * Implements hook_field_widget_settings_form().
  */
 function geolocation_googlemaps_field_widget_settings_form($field, $instance) {
+
   $widget = $instance['widget'];
   $settings = $widget['settings'];
 
@@ -336,4 +408,4 @@
       form_error($element, $error['message']);
       break;
   }
-}
\ Brak znaku nowej linii na końcu pliku
+}
