diff --git a/leaflet.formatters.inc b/leaflet.formatters.inc
index 3b67ad7..0f59d96 100644
--- a/leaflet.formatters.inc
+++ b/leaflet.formatters.inc
@@ -318,16 +318,31 @@ function leaflet_process_geofield($items = array()) {
         break;
 
       case 'multipolygon':
-      case 'multipolyline':
         $geom = geoPHP::load($item['wkt'], 'wkt');
+        $tmp = $geom->getComponents();
+          foreach ($tmp as $delta => $polygon) {
+            $polygon_component = $polygon->getComponents();
+            foreach ($polygon_component as $delta => $linestring) {
+              $components[] = $linestring;
+            }
+          }
+          foreach ($components as $key => $component) {
+            $subcomponents = $component->getComponents();
+            foreach ($subcomponents as $subcomponent) {
+              $datum['component'][$key]['points'][] = array(
+                'lat' => $subcomponent->getY(),
+                'lon' => $subcomponent->getX(),
+              );
+            }
+            unset($subcomponent);
+         }
 
-        if ($item['geo_type'] == 'multipolyline') {
-          $components = $geom->getComponents();
-        }
-        else {
-          $tmp = $geom->getComponents();
-          $components = $tmp[0]->getComponents();
-        }
+         $data[] = $datum;
+         break;
+
+      case 'multipolyline':
+        $geom = geoPHP::load($item['wkt'], 'wkt');
+        $components = $geom->getComponents();
 
         foreach ($components as $key => $component) {
           $subcomponents = $component->getComponents();
