diff --git a/leaflet.formatters.inc b/leaflet.formatters.inc
index 71ae952..eaa2d1d 100644
--- a/leaflet.formatters.inc
+++ b/leaflet.formatters.inc
@@ -13,7 +13,13 @@ function leaflet_field_formatter_info() {
       'settings' => array('leaflet_map' => '', 'icon' => '', 'height' => 400, 'popup' => 0),
     );
   }
-
+  if (module_exists('entityreference')) {
+    $formatters['entityreference_leaflet'] = array(
+      'label' => t('Leaflet'),
+      'field types' => array ('entityreference'),
+      'settings' => array('target_fields' => '', 'teszt' => '', 'leaflet_map' => '', 'icon' => '', 'height' => 400, 'popup' => 0),
+    );
+  } 
   return $formatters;
 }
 
@@ -23,10 +29,44 @@ function leaflet_field_formatter_info() {
 function leaflet_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
   $display = $instance['display'][$view_mode];
   $settings = $display['settings'];
-
   $element = array();
 
-  if ($display['type'] == 'geofield_leaflet') {
+  switch ($display['type']) {
+    case 'entityreference_leaflet' :  
+      $target_type = $field['settings']['target_type'];
+      $entity_info = entity_get_info($target_type);
+      $source_fields = array();
+      
+      foreach ($field['settings']['handler_settings']['target_bundles'] as $bundle_name) {
+        $source_fields[$bundle_name]['label'] = $entity_info['bundles'][$bundle_name]['label'];
+        foreach (field_info_instances($target_type, $bundle_name) as $field_name => $instancename) {
+          $field = field_info_field($field_name);
+          if ($field['type'] == 'geofield') {
+            $source_fields[$bundle_name]['geofield_names'][$field['field_name']] = $instancename['label'];
+          } 
+        }   
+      }
+      
+      $element['target_fields'] = array(
+      '#title' => t('Source fields'),
+      '#description' => t('Select the geofield sources from the referenced entities.'),
+      '#type' => 'fieldset',
+      '#collapsible' => TRUE,
+      );
+      foreach ($source_fields as $bundle_machine_name => $bundle_value) {
+        $bundle_label = $bundle_value['label'];
+        $bundle_options = array();
+        foreach ($bundle_value['geofield_names'] as $field_machine_name => $field_label) {
+          $bundle_options[$field_machine_name] = $field_label . ' (' . $field_machine_name . ')';
+        }
+        $element['target_fields'][$bundle_machine_name] = array(
+        '#type' => 'checkboxes',
+        '#title' => t($bundle_label),
+        '#default_value' => $settings['target_fields'][$bundle_machine_name],
+        '#options' => $bundle_options,
+        );     
+      }
+    case 'geofield_leaflet':
     $options = array('' => t('-- Select --'));
     foreach (leaflet_map_get_info() as $key => $map) {
       $options[$key] = t($map['label']);
@@ -169,7 +209,6 @@ function leaflet_field_formatter_settings_form($field, $instance, $view_mode, $f
       '#element_validate' => array('element_validate_number'),
     );
   }
-
   return $element;
 }
 
@@ -195,7 +234,7 @@ function leaflet_field_formatter_settings_summary($field, $instance, $view_mode)
 
   $summary = '';
 
-  if ($display['type'] == 'geofield_leaflet') {
+  if ($display['type'] == 'geofield_leaflet' || $display['type'] == 'entityreference_leaflet') {
     $summary = t('Leaflet map: @map', array('@map' => $settings['leaflet_map']));
   }
 
@@ -207,16 +246,31 @@ function leaflet_field_formatter_settings_summary($field, $instance, $view_mode)
  */
 function leaflet_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
   $element = array();
-  $settings = $display['settings'];
-
+  $settings = $display['settings'];   
   if (count($items) == 0) {
     return '';
   }
   else {
     switch ($display['type']) {
+      case 'entityreference_leaflet':
+        foreach ($items as $delta => $target_id) {
+          $ref_node = node_load($target_id['target_id']);
+          foreach ($settings['target_fields'] as $bundle => $geofields) {
+            if ($ref_node->type == $bundle) {
+              foreach ($geofields as $geofield_machine_name) {
+                if (isset($ref_node->$geofield_machine_name)) {
+                  $temp = $ref_node->$geofield_machine_name;
+                  foreach ($temp[LANGUAGE_NONE] as $delta => $value) {
+                  }
+                  $features[] = $value;
+                }  
+              }
+            }            
+          }
+        }
+        $items = $features;
       case 'geofield_leaflet':
         $map = leaflet_map_get_info($settings['leaflet_map']);
-
         $features = leaflet_process_geofield($items);
 
         // if only a single feature, set the popup content to the entity title
