diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js
index e1d88cbbbd74e3454ecb77a0e2e16043bd8c235e..6b9e3d5a84a428cb5c61c78fbd1fe751269f6c16 100644
--- a/frontend-js/src/main/js/minerva.js
+++ b/frontend-js/src/main/js/minerva.js
@@ -229,7 +229,6 @@ function getElements(elementIdentifiers, customMap) {
 }
 
 function getReactionsForElements(elementIdentifiers, customMap) {
-
   var elementsByModelId = [];
   for (var i = 0; i < elementIdentifiers.length; i++) {
     var identifiedElement = new IdentifiedElement(elementIdentifiers[i]);
@@ -369,6 +368,20 @@ function createResult(customMap) {
       }
       return submap.setCenter(new google.maps.Point(params.x, params.y));
     },
+    fitBounds : function(params) {
+      var submap = customMap.getSubmapById(params.modelId);
+      if (submap === null) {
+        throw new Error("Unknown modelId: " + params.modelId);
+      }
+      var p1 = new google.maps.Point(params.x1, params.y1);
+      var p2 = new google.maps.Point(params.x2, params.y2);
+      var latLng1 = submap.fromPointToLatLng(p1);
+      var latLng2 = submap.fromPointToLatLng(p2);
+      var bounds = new google.maps.LatLngBounds();
+      bounds.extend(latLng1);
+      bounds.extend(latLng2);
+      return submap.getGoogleMap().fitBounds(bounds);
+    },
     setZoom : function(params) {
       var submap = customMap.getSubmapById(params.modelId);
       if (submap === null) {