diff --git a/location.module b/location.module
index 791e881..ce7f085 100644
--- a/location.module
+++ b/location.module
@@ -426,6 +426,42 @@ function _location_process_location($element) {
   }
 
   $element += element_info('fieldset');
+
+  // Add the pre/post render function to stop 'Array' from appearing in the
+  // fieldset (fixing the issue in #1056148).
+  $element['#pre_render'][] = "location_element_pre_render";
+  $element['#post_render'][] = "location_element_post_render";
+
+  return $element;
+}
+
+/*
+ * A post rendering fuction for location fields to fix the issue #1056148.
+ *
+ * This function takes the action performed in the pre_render function and
+ * reverses it so that the location field still works.
+ *
+ * @see location_element_pre_render
+ */
+function location_element_post_render($content, &$element) {
+  $element['#value'] = $element['#pre_render_value'];
+  unset($element['#pre_render_value']);
+  return $content;
+}
+
+/*
+ * A pre rendering fuction for location fields to fix the issue #1056148.
+ *
+ * Takes the value of the location $element and moves it to a seperate key
+ * before rendering takes place.
+ *
+ * This is so that #value doesn't get unwantedly output in the fieldset.
+ *
+ * @see location_element_post_render
+ */
+function location_element_pre_render($element) {
+  $element['#pre_render_value'] = $element['#value'];
+  unset($element['#value']);
   return $element;
 }
 
