diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js
index 7310e2ca29c2089fd417c5cb39546f73a0632fdc..f55e2ce91c26ec112df121ef09db9fac436999c9 100644
--- a/frontend-js/src/main/js/map/CustomMap.js
+++ b/frontend-js/src/main/js/map/CustomMap.js
@@ -448,6 +448,14 @@ CustomMap.prototype.customizeGoogleMapView = function(div) {
   }
 };
 
+/**
+ * Sets center point for google maps.
+ * 
+ * @param mapIdentifier
+ *          id of the model for which we change center
+ * @param coordinates
+ *          new center point on map
+ */
 CustomMap.prototype.setCenter = function(mapIdentifier, coordinates) {
   var submap = this.getSubmodelById(mapIdentifier);
   if (submap !== null) {
@@ -464,16 +472,24 @@ CustomMap.prototype.setCenter = function(mapIdentifier, coordinates) {
   }
 };
 
+/**
+ * Sets zoom level for google maps.
+ * 
+ * @param mapIdentifier
+ *          id of the model for which we change zoom level
+ * @param zoom
+ *          new zoom level on map
+ */
 CustomMap.prototype.setZoom = function(mapIdentifier, zoom) {
-  if (this.getModel().getId() === mapIdentifier) {
-    this.getGoogleMap().setZoom(zoom);
-  } else {
-    GuiConnector.openDialog(mapIdentifier);
-    for (var i = 0; i < this.submaps.length; i++) {
-      if (this.submaps[i].getId() === mapIdentifier) {
-        this.submaps[i].getGoogleMap().setZoom(zoom);
-      }
+  var submap = this.getSubmodelById(mapIdentifier);
+  if (submap !== null) {
+    if (submap.initialized) {
+      submap.getGoogleMap().setZoom(zoom);
+    } else {
+      logger.warn("cannot center map that is not opened yet");
     }
+  } else {
+    throw new Error("cannot find submap with id: " + mapIdentifier);
   }
 };
 
diff --git a/frontend-js/src/test/js/google-map-mock.js b/frontend-js/src/test/js/google-map-mock.js
index 53261aa0a5af99825d03cbe1c0c3eadbc66915ba..243606a9c82d5e2624d325d661af9acb497ad585 100644
--- a/frontend-js/src/test/js/google-map-mock.js
+++ b/frontend-js/src/test/js/google-map-mock.js
@@ -184,6 +184,7 @@ var google = {
         },
         setZoom : function(zoom) {
           data.zoom = zoom;
+          google.maps.event.trigger(this, "zoom_changed", zoom);
         },
         getCenter : function() {
           return data.center;
diff --git a/frontend-js/src/test/js/map/CustomMap-test.js b/frontend-js/src/test/js/map/CustomMap-test.js
index f0181916cb3fa4ff4058bbfade18f07651ec7da5..70c78caaf23b6659f7bf2ad0b14bf8a0ea8152c6 100644
--- a/frontend-js/src/test/js/map/CustomMap-test.js
+++ b/frontend-js/src/test/js/map/CustomMap-test.js
@@ -734,4 +734,13 @@ describe('CustomMap', function() {
     assert.ok(ServerConnector.getSessionData().getCenter(submodel));
   });
 
+  it("setZoom on submap", function() {
+    var options = helper.createCustomMapOptions();
+
+    var map = new CustomMap(options);
+
+    map.setZoom(map.getId(), 3);
+    assert.equal(3, ServerConnector.getSessionData().getZoomLevel(map.getModel()));
+  });
+
 });