diff --git a/src/module_vmap/module/javascript/app/vmap/map/mapcompare.js b/src/module_vmap/module/javascript/app/vmap/map/mapcompare.js
index 8fe1d59030260107747379a12f61b466731e50ef..c894667b75001854e09a37bf4b0633605e69b831 100644
--- a/src/module_vmap/module/javascript/app/vmap/map/mapcompare.js
+++ b/src/module_vmap/module/javascript/app/vmap/map/mapcompare.js
@@ -526,17 +526,22 @@ nsVmap.MapCompare.prototype.mapCompareController.prototype.startAnimation = func
     this.animationDelay.start();
 };
 
+
 /**
  * Update the map size with animation
  * @returns {undefined}
- * @export
  */
 nsVmap.MapCompare.prototype.mapCompareController.prototype.synchronizeMap = function () {
     oVmap.log('nsVmap.MapCompare.prototype.mapCompareController.prototype.synchronizeMap');
     var this_ = this;
+    var isMouseDown = false;
     // blocage infinite loop
-    oVmap.getMap().getOLMap().getTargetElement().addEventListener('mousedown', function(){this_.isOnElement = 'map';});
-    this_.map.getTargetElement().addEventListener('mousedown', function(){this_.isOnElement = 'mapCompare';});
+    oVmap.getMap().getOLMap().getTargetElement().addEventListener('mousedown', function(){this_.isOnElement = 'map';isMouseDown = true;});
+    this_.map.getTargetElement().addEventListener('mousedown', function(){this_.isOnElement = 'mapCompare';isMouseDown = true;});
+    oVmap.getMap().getOLMap().getTargetElement().addEventListener('mouseup', function(){this_.isOnElement = 'map';isMouseDown = false;});
+    this_.map.getTargetElement().addEventListener('mouseup', function(){this_.isOnElement = 'mapCompare';isMouseDown = false;});
+    oVmap.getMap().getOLMap().getTargetElement().addEventListener('mouseenter', function(){if(!isMouseDown)this_.isOnElement = 'map';});
+    this_.map.getTargetElement().addEventListener('mouseenter', function(){if(!isMouseDown)this_.isOnElement = 'mapCompare';});
     // position du curseur sur l'autre carte
     oVmap.getMap().getOLMap().on('pointermove', function(e){
       var coord = e.coordinate;
@@ -597,67 +602,52 @@ nsVmap.MapCompare.prototype.mapCompareController.prototype.synchronizeMap = func
       this_.targetOverlay_.setPosition(convertCoord);
     });
     // synchro de la carte avec la carte de comparaison
-    oVmap.getMap().getOLMap().getView().on("change:center", function(e){
-        if(this_.isOnElement === 'map'){
-          // Récupère l'étendue de la carte principale
-          var oldCenter = oVmap.getMap().getOLMap().getView().getCenter();
-
-          // Récupère l'ancienne et la nouvelle projection
-          var oldProjection = oVmap.getMap().getOLMap().getView().getProjection().getCode();
-          var newProjection = this_.map.getView().getProjection().getCode();
-
-          var newCenter = ol.proj.transform(oldCenter, oldProjection, newProjection);
-
-          this_.map.getView().setCenter(newCenter);
-        }
-    }, this);
-    oVmap.getMap().getOLMap().getView().on("change:resolution", function(e){
-      if (this_.map.getView().getResolution() != oVmap.getMap().getOLMap().getView().getResolution()){
-        this_.map.getView().setResolution(oVmap.getMap().getOLMap().getView().getResolution());
-
-        // Récupère l'étendue de la carte principale
-        var oldCenter = oVmap.getMap().getOLMap().getView().getCenter();
-
-        // Récupère l'ancienne et la nouvelle projection
-        var oldProjection = oVmap.getMap().getOLMap().getView().getProjection().getCode();
-        var newProjection = this_.map.getView().getProjection().getCode();
-
-        var newCenter = ol.proj.transform(oldCenter, oldProjection, newProjection);
-
-        this_.map.getView().setCenter(newCenter);
-      }
-    }, this);
+    oVmap.getMap().getOLMap().on("postrender", this_.updateCompareMap, this);
     // synchro de la carte de comapraison avec la carte de base
-    this_.map.getView().on("change:center", function(e){
-      if(this_.isOnElement === 'mapCompare'){
-          // Récupère l'étendue de la carte principale
-          var oldCenter = this_.map.getView().getCenter();
+    this_.map.on("postrender", this_.updateBasicMap, this);
+};
+/**
+ * Update the map extent with animation
+ * @returns {undefined}
+ */
+nsVmap.MapCompare.prototype.mapCompareController.prototype.updateBasicMap = function(e){
+  var this_ = this
+  if(this_.isOnElement === 'mapCompare'){
+    // Récupère l'étendue de la carte principale
+    var oldExtent = this_.map.getView().calculateExtent(this_['map'].getSize());
 
-          // Récupère l'ancienne et la nouvelle projection
-          var newProjection = oVmap.getMap().getOLMap().getView().getProjection().getCode();
-          var oldProjection = this_.map.getView().getProjection().getCode();
+    // Récupère l'ancienne et la nouvelle projection
+    var newProjection = oVmap.getMap().getOLMap().getView().getProjection().getCode();
+    var oldProjection = this_.map.getView().getProjection().getCode();
 
-          var newCenter = ol.proj.transform(oldCenter, oldProjection, newProjection);
+    var newExtent = ol.proj.transformExtent(oldExtent, oldProjection, newProjection);
+    oVmap.getMap().getOLMap().getView().fit(newExtent, {
+        nearest: true
+    });
 
-          oVmap.getMap().getOLMap().getView().setCenter(newCenter);
-       }
-    }, this);
-    this_.map.getView().on("change:resolution", function(e){
-      if (this_.map.getView().getResolution() != oVmap.getMap().getOLMap().getView().getResolution()){
-        oVmap.getMap().getOLMap().getView().setResolution(this_.map.getView().getResolution());
-        // Récupère l'étendue de la carte principale
-        var oldCenter = this_.map.getView().getCenter();
+  }
+}
+/**
+ * Update the map extent with animation
+ * @returns {undefined}
+ */
+nsVmap.MapCompare.prototype.mapCompareController.prototype.updateCompareMap = function(e){
+    var this_ = this;
+    if(this_.isOnElement === 'map'){
+      // Récupère l'étendue de la carte principale
+      var oldExtent = oVmap.getMap().getOLMap().getView().calculateExtent(oVmap.getMap().getOLMap().getSize());
 
-        // Récupère l'ancienne et la nouvelle projection
-        var newProjection = oVmap.getMap().getOLMap().getView().getProjection().getCode();
-        var oldProjection = this_.map.getView().getProjection().getCode();
+      // Récupère l'ancienne et la nouvelle projection
+      var oldProjection = oVmap.getMap().getOLMap().getView().getProjection().getCode();
+      var newProjection = this_.map.getView().getProjection().getCode();
 
-        var newCenter = ol.proj.transform(oldCenter, oldProjection, newProjection);
+      var newExtent = ol.proj.transformExtent(oldExtent, oldProjection, newProjection);
+      this_['map'].getView().fit(newExtent, {
+          nearest: true
+      });
 
-        oVmap.getMap().getOLMap().getView().setCenter(newCenter);
-      }
-    }, this);
-};
+    }
+}
 
 /**
  * Add a layer on the map