diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c
index f164954..908e5af 100644
--- a/addressbook/gui/widgets/eab-contact-display.c
+++ b/addressbook/gui/widgets/eab-contact-display.c
@@ -54,13 +54,15 @@ struct _EABContactDisplayPrivate {
 	EContact *contact;
 	EABContactDisplayMode mode;
 	GtkOrientation orientation;
+	gboolean show_maps;
 };
 
 enum {
 	PROP_0,
 	PROP_CONTACT,
 	PROP_MODE,
-	PROP_ORIENTATION
+	PROP_ORIENTATION,
+	PROP_SHOW_MAPS
 };
 
 enum {
@@ -625,7 +627,7 @@ render_address_map(GString *buffer, EContact *contact, int map_type)
 }
 
 static void
-render_contact_horizontal (GString *buffer, EContact *contact)
+render_contact_horizontal (GString *buffer, EContact *contact, gboolean show_maps)
 {
 	g_string_append (buffer, "<table border=\"0\">");
 	render_title_block (buffer, contact);
@@ -634,13 +636,17 @@ render_contact_horizontal (GString *buffer, EContact *contact)
 	g_string_append (buffer, "<table border=\"0\">");
 	render_contact_block (buffer, contact);
 	render_work_block (buffer, contact);
-	g_string_append (buffer, "<tr><td></td><td colspan=\"2\">");
-	render_address_map (buffer, contact, E_CONTACT_ADDRESS_WORK);
-	g_string_append (buffer, "<br></td></tr>");
+	if (show_maps) {
+		g_string_append (buffer, "<tr><td></td><td colspan=\"2\">");
+		render_address_map (buffer, contact, E_CONTACT_ADDRESS_WORK);
+		g_string_append (buffer, "<br></td></tr>");
+	}
 	render_personal_block (buffer, contact);
-	g_string_append (buffer, "<tr><td></td><td colspan=\"2\">");
-	render_address_map (buffer, contact, E_CONTACT_ADDRESS_HOME);
-	g_string_append (buffer, "<br></td></tr>");
+	if (show_maps) {
+		g_string_append (buffer, "<tr><td></td><td colspan=\"2\">");
+		render_address_map (buffer, contact, E_CONTACT_ADDRESS_HOME);
+		g_string_append (buffer, "<br></td></tr>");
+	}
 	g_string_append (buffer, "</table>");
 
 	g_string_append (buffer, "<table border=\"0\">");
@@ -649,7 +655,7 @@ render_contact_horizontal (GString *buffer, EContact *contact)
 }
 
 static void
-render_contact_vertical (GString *buffer, EContact *contact)
+render_contact_vertical (GString *buffer, EContact *contact, gboolean show_maps)
 {
 	/* First row: photo & name */
 	g_string_append (buffer, "<tr><td colspan=\"3\">");
@@ -669,14 +675,16 @@ render_contact_vertical (GString *buffer, EContact *contact)
 	g_string_append (buffer, "<td width=\"30\"></td><td valign=\"top\"><table border=\"0\">");
 	render_work_block (buffer, contact);
 	g_string_append (buffer, "</table>");
-	render_address_map (buffer, contact, E_CONTACT_ADDRESS_WORK);
+	if (show_maps)
+		render_address_map (buffer, contact, E_CONTACT_ADDRESS_WORK);
 	g_string_append (buffer, "</td>");
 
 	/* Third column: Personal */
 	g_string_append (buffer, "<td width=\"30\"></td><td valign=\"top\"><table border=\"0\">");
 	render_personal_block (buffer, contact);
 	g_string_append (buffer, "</table>");
-	render_address_map (buffer, contact, E_CONTACT_ADDRESS_HOME);
+	if (show_maps)
+		render_address_map (buffer, contact, E_CONTACT_ADDRESS_HOME);
 	g_string_append (buffer, "</td>");
 
 	/* Third row: note */
@@ -688,12 +696,12 @@ render_contact_vertical (GString *buffer, EContact *contact)
 }
 
 static void
-render_contact (GString *buffer, EContact *contact, GtkOrientation orientation)
+render_contact (GString *buffer, EContact *contact, GtkOrientation orientation, gboolean show_maps)
 {
 	if (orientation == GTK_ORIENTATION_VERTICAL)
-		render_contact_vertical (buffer, contact);
+		render_contact_vertical (buffer, contact, show_maps);
 	else
-		render_contact_horizontal (buffer, contact);
+		render_contact_horizontal (buffer, contact, show_maps);
 }
 
 static void
@@ -717,7 +725,7 @@ eab_contact_display_render_normal (EABContactDisplay *display,
 		if (e_contact_get (contact, E_CONTACT_IS_LIST))
 			render_contact_list (buffer, contact);
 		else
-			render_contact (buffer, contact, orientation);
+			render_contact (buffer, contact, orientation, display->priv->show_maps);
 
 	}
 
@@ -941,6 +949,12 @@ contact_display_set_property (GObject *object,
 				EAB_CONTACT_DISPLAY (object),
 				g_value_get_int (value));
 			return;
+
+		case PROP_SHOW_MAPS:
+			eab_contact_display_set_show_maps (
+				EAB_CONTACT_DISPLAY (object),
+				g_value_get_boolean (value));
+			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -970,6 +984,12 @@ contact_display_get_property (GObject *object,
 				value, eab_contact_display_get_orientation (
 				EAB_CONTACT_DISPLAY (object)));
 			return;
+
+		case PROP_SHOW_MAPS:
+			g_value_set_boolean (
+				value, eab_contact_display_get_show_maps (
+				EAB_CONTACT_DISPLAY (object)));
+			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -1207,6 +1227,16 @@ eab_contact_display_class_init (EABContactDisplayClass *class)
 			GTK_ORIENTATION_HORIZONTAL,
 			G_PARAM_READWRITE));
 
+	g_object_class_install_property	(
+		object_class,
+		PROP_SHOW_MAPS,
+		g_param_spec_boolean (
+			"show-maps",
+			NULL,
+			NULL,
+			FALSE,
+			G_PARAM_READWRITE));
+
 	signals[SEND_MESSAGE] = g_signal_new (
 		"send-message",
 		G_OBJECT_CLASS_TYPE (class),
@@ -1230,6 +1260,7 @@ eab_contact_display_init (EABContactDisplay *display)
 	display->priv = EAB_CONTACT_DISPLAY_GET_PRIVATE (display);
 	display->priv->mode = EAB_CONTACT_DISPLAY_RENDER_NORMAL;
 	display->priv->orientation = GTK_ORIENTATION_HORIZONTAL;
+	display->priv->show_maps = FALSE;
 
 	web_view = E_WEB_VIEW (display);
 	ui_manager = e_web_view_get_ui_manager (web_view);
@@ -1392,6 +1423,39 @@ eab_contact_display_set_orientation (EABContactDisplay *display, GtkOrientation
 	g_object_notify (G_OBJECT (display), "orientation");
 }
 
+gboolean
+eab_contact_display_get_show_maps (EABContactDisplay *display)
+{
+	g_return_val_if_fail (EAB_IS_CONTACT_DISPLAY (display), FALSE);
+
+	return display->priv->show_maps;
+}
+
+void
+eab_contact_display_set_show_maps (EABContactDisplay *display, gboolean show_maps)
+{
+	EABContactDisplayMode mode;
+	EContact *contact;
+
+	g_return_if_fail (EAB_IS_CONTACT_DISPLAY (display));
+
+	display->priv->show_maps = show_maps;
+	contact = eab_contact_display_get_contact (display);
+	mode = eab_contact_display_get_mode (display);
+
+	switch (mode) {
+		case EAB_CONTACT_DISPLAY_RENDER_NORMAL:
+			eab_contact_display_render_normal (display, contact);
+			break;
+
+		case EAB_CONTACT_DISPLAY_RENDER_COMPACT:
+			eab_contact_display_render_compact (display, contact);
+			break;
+	}
+
+	g_object_notify (G_OBJECT (display), "show-maps");
+}
+
 #ifdef WITH_CONTACT_MAPS
 void
 eab_contact_display_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, EABContactDisplay *display)
diff --git a/addressbook/gui/widgets/eab-contact-display.h b/addressbook/gui/widgets/eab-contact-display.h
index 0492fce..22f1c8f 100644
--- a/addressbook/gui/widgets/eab-contact-display.h
+++ b/addressbook/gui/widgets/eab-contact-display.h
@@ -91,6 +91,9 @@ void		eab_contact_display_set_mode	(EABContactDisplay *display,
 GtkOrientation eab_contact_display_get_orientation (EABContactDisplay *display);
 void eab_contact_display_set_orientation (EABContactDisplay *display, GtkOrientation orientation);
 
+gboolean eab_contact_display_get_show_maps (EABContactDisplay *display);
+void eab_contact_display_set_show_maps (EABContactDisplay *display, gboolean display_maps);
+
 void eab_contact_display_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, EABContactDisplay *display);
 
 G_END_DECLS
diff --git a/modules/addressbook/apps_evolution_addressbook.schemas.in b/modules/addressbook/apps_evolution_addressbook.schemas.in
index 03e6006..e13337e 100644
--- a/modules/addressbook/apps_evolution_addressbook.schemas.in
+++ b/modules/addressbook/apps_evolution_addressbook.schemas.in
@@ -125,6 +125,18 @@
          <long>Whether to show the preview pane.</long>
       </locale>
     </schema>
+    
+    <schema>
+      <key>/schemas/apps/evolution/addressbook/display/preview_show_maps</key>
+      <applyto>/apps/evolution/addressbook/display/preview_show_maps</applyto>
+      <owner>evolution-addressbook</owner>
+      <type>bool</type>
+      <default>false</default>
+      <locale name="C">
+      	<short>Show maps</short>
+      	<long>Whether to show maps in preview pane.</long>
+      </locale>
+    </schema>
 
   </schemalist>
 </gconfschemafile>
diff --git a/modules/addressbook/e-book-shell-content.c b/modules/addressbook/e-book-shell-content.c
index a2f7f9c..59b70dc 100644
--- a/modules/addressbook/e-book-shell-content.c
+++ b/modules/addressbook/e-book-shell-content.c
@@ -41,6 +41,7 @@ struct _EBookShellContentPrivate {
 
 	GtkOrientation orientation;
 
+	gboolean preview_show_maps;
 	guint preview_visible	: 1;
 };
 
@@ -49,7 +50,8 @@ enum {
 	PROP_CURRENT_VIEW,
 	PROP_ORIENTATION,
 	PROP_PREVIEW_CONTACT,
-	PROP_PREVIEW_VISIBLE
+	PROP_PREVIEW_VISIBLE,
+	PROP_PREVIEW_SHOW_MAPS
 };
 
 static gpointer parent_class;
@@ -144,6 +146,12 @@ book_shell_content_set_property (GObject *object,
 				E_BOOK_SHELL_CONTENT (object),
 				g_value_get_boolean (value));
 			return;
+
+		case PROP_PREVIEW_SHOW_MAPS:
+			e_book_shell_content_set_preview_show_maps (
+				E_BOOK_SHELL_CONTENT (object),
+				g_value_get_boolean (value));
+			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -183,6 +191,13 @@ book_shell_content_get_property (GObject *object,
 				e_book_shell_content_get_preview_visible (
 				E_BOOK_SHELL_CONTENT (object)));
 			return;
+
+		case PROP_PREVIEW_SHOW_MAPS:
+			g_value_set_boolean (
+				value,
+				e_book_shell_content_get_preview_show_maps (
+				E_BOOK_SHELL_CONTENT (object)));
+			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -267,11 +282,19 @@ book_shell_content_constructed (GObject *object)
 		EAB_CONTACT_DISPLAY (widget),
 		priv->orientation);
 
+	eab_contact_display_set_show_maps (
+		EAB_CONTACT_DISPLAY (widget),
+		priv->preview_show_maps);
+
 	g_object_bind_property (
 		object, "orientation",
 		widget, "orientation",
 		G_BINDING_SYNC_CREATE);
 
+	g_object_bind_property (
+		object, "preview-show-maps",
+		widget, "show-maps",
+		G_BINDING_SYNC_CREATE);
 
 	e_shell_configure_web_view (shell, E_WEB_VIEW (widget));
 	gtk_widget_show (widget);
@@ -452,6 +475,16 @@ book_shell_content_class_init (EBookShellContentClass *class)
 
 	g_object_class_override_property (
 		object_class, PROP_ORIENTATION, "orientation");
+
+	g_object_class_install_property (
+		object_class,
+		PROP_PREVIEW_SHOW_MAPS,
+		g_param_spec_boolean (
+			"preview-show-maps",
+			NULL,
+			NULL,
+			FALSE,
+			G_PARAM_READWRITE));
 }
 
 static void
@@ -689,6 +722,26 @@ e_book_shell_content_set_preview_visible (EBookShellContent *book_shell_content,
 	g_object_notify (G_OBJECT (book_shell_content), "preview-visible");
 }
 
+gboolean
+e_book_shell_content_get_preview_show_maps (EBookShellContent *book_shell_content)
+{
+	g_return_val_if_fail (
+		E_IS_BOOK_SHELL_CONTENT (book_shell_content), FALSE);
+
+	return book_shell_content->priv->preview_show_maps;
+}
+
+void
+e_book_shell_content_set_preview_show_maps (EBookShellContent *book_shell_content,
+                                            gboolean show_maps)
+{
+	g_return_if_fail (E_IS_BOOK_SHELL_CONTENT (book_shell_content));
+
+	book_shell_content->priv->preview_show_maps = show_maps;
+
+	g_object_notify (G_OBJECT (book_shell_content), "preview-show-maps");
+}
+
 EShellSearchbar *
 e_book_shell_content_get_searchbar (EBookShellContent *book_shell_content)
 {
diff --git a/modules/addressbook/e-book-shell-content.h b/modules/addressbook/e-book-shell-content.h
index 0876ec9..28fef27 100644
--- a/modules/addressbook/e-book-shell-content.h
+++ b/modules/addressbook/e-book-shell-content.h
@@ -105,6 +105,11 @@ gboolean	e_book_shell_content_get_preview_visible
 void		e_book_shell_content_set_preview_visible
 					(EBookShellContent *book_shell_content,
 					 gboolean preview_visible);
+gboolean	e_book_shell_content_get_preview_show_maps
+					(EBookShellContent *book_shell_content);
+void		e_book_shell_content_set_preview_show_maps
+					(EBookShellContent *book_shell_content,
+					 gboolean show_maps);
 EShellSearchbar *
 		e_book_shell_content_get_searchbar
 					(EBookShellContent *book_shell_content);
diff --git a/modules/addressbook/e-book-shell-view-actions.c b/modules/addressbook/e-book-shell-view-actions.c
index 7dec379..49aa40b 100644
--- a/modules/addressbook/e-book-shell-view-actions.c
+++ b/modules/addressbook/e-book-shell-view-actions.c
@@ -499,6 +499,18 @@ action_contact_preview_cb (GtkToggleAction *action,
 }
 
 static void
+action_contact_preview_show_maps_cb (GtkToggleAction *action,
+                                     EBookShellView *book_shell_view)
+{
+	EBookShellContent *book_shell_content;
+	gboolean show_maps;
+
+	book_shell_content = book_shell_view->priv->book_shell_content;
+	show_maps = gtk_toggle_action_get_active (action);
+	e_book_shell_content_set_preview_show_maps (book_shell_content, show_maps);
+}
+
+static void
 action_contact_print_cb (GtkAction *action,
                          EBookShellView *book_shell_view)
 {
@@ -859,7 +871,15 @@ static GtkToggleActionEntry contact_toggle_entries[] = {
 	  "<Control>m",
 	  N_("Show contact preview window"),
 	  G_CALLBACK (action_contact_preview_cb),
-	  TRUE }
+	  TRUE },
+
+	{ "contact-preview-show-maps",
+	  NULL,
+	  N_("Show _Maps"),
+	  NULL,
+	  N_("Show maps in contact preview window"),
+	  G_CALLBACK (action_contact_preview_show_maps_cb),
+	  FALSE }
 };
 
 static GtkRadioActionEntry contact_view_entries[] = {
@@ -1067,6 +1087,10 @@ e_book_shell_view_actions_init (EBookShellView *book_shell_view)
 	key = "/apps/evolution/addressbook/display/layout";
 	gconf_bridge_bind_property (bridge, key, object, "current-value");
 
+	object = G_OBJECT (ACTION (CONTACT_PREVIEW_SHOW_MAPS));
+	key = "/apps/evolution/addressbook/display/preview_show_maps";
+	gconf_bridge_bind_property (bridge, key, object, "active");
+
 	/* Fine tuning. */
 
 	g_signal_connect (
@@ -1083,9 +1107,18 @@ e_book_shell_view_actions_init (EBookShellView *book_shell_view)
 		ACTION (CONTACT_VIEW_VERTICAL), "sensitive",
 		G_BINDING_SYNC_CREATE);
 
+	g_object_bind_property (
+		ACTION (CONTACT_PREVIEW), "active",
+		ACTION (CONTACT_PREVIEW_SHOW_MAPS), "sensitive",
+		G_BINDING_SYNC_CREATE);
+
 	e_web_view_set_open_proxy (web_view, ACTION (CONTACT_OPEN));
 	e_web_view_set_print_proxy (web_view, ACTION (CONTACT_PRINT));
 	e_web_view_set_save_as_proxy (web_view, ACTION (CONTACT_SAVE_AS));
+
+#ifndef WITH_CONTACT_MAPS
+	gtk_action_set_visible (ACTION (CONTACT_PREVIEW_SHOW_MAPS), FALSE);
+#endif
 }
 
 void
diff --git a/modules/addressbook/e-book-shell-view-actions.h b/modules/addressbook/e-book-shell-view-actions.h
index ef40dd1..7260fd2 100644
--- a/modules/addressbook/e-book-shell-view-actions.h
+++ b/modules/addressbook/e-book-shell-view-actions.h
@@ -63,6 +63,8 @@
 	E_SHELL_WINDOW_ACTION ((window), "contact-open")
 #define E_SHELL_WINDOW_ACTION_CONTACT_PREVIEW(window) \
 	E_SHELL_WINDOW_ACTION ((window), "contact-preview")
+#define E_SHELL_WINDOW_ACTION_CONTACT_PREVIEW_SHOW_MAPS(window) \
+	E_SHELL_WINDOW_ACTION ((window), "contact-preview-show-maps")
 #define E_SHELL_WINDOW_ACTION_CONTACT_PRINT(window) \
 	E_SHELL_WINDOW_ACTION ((window), "contact-print")
 #define E_SHELL_WINDOW_ACTION_CONTACT_SAVE_AS(window) \
