diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-10-07 16:09:22 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-10-07 16:11:28 +0200 |
commit | 7f6bd113c0b3ab5fda4143cf8beb5cbf72f140b4 (patch) | |
tree | ff54267a2229fabfab38016604fe34c673ea6870 | |
parent | a0e55c1c2f256aac90bb602b1d8dd8010f987e1f (diff) | |
download | Chimère-7f6bd113c0b3ab5fda4143cf8beb5cbf72f140b4.tar.bz2 Chimère-7f6bd113c0b3ab5fda4143cf8beb5cbf72f140b4.zip |
JS: recenter considering the side panel
-rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js index ef7c3d0..ab951a4 100644 --- a/chimere/static/chimere/js/jquery.chimere.js +++ b/chimere/static/chimere/js/jquery.chimere.js @@ -1029,8 +1029,19 @@ function transformCoordToLonLat(coord) { settings.map.beforeRender(pan, zoom); // center - v.setCenter(feature.getGeometry().getCoordinates()); - + if ($("#panel").is(":visible")){ + var delta_x = $("#panel").width() / 2; + // paning before zoom base delta divided by 2 + if (zoom_level < settings.maxZoom){ + delta_x = delta_x / 2; + } + v.centerOn( + feature.getGeometry().getCoordinates(), + [0, 0], + [delta_x, 0]); + } else { + v.setCenter(feature.getGeometry().getCoordinates()); + } // max zoom reached if (zoom_level >= settings.maxZoom){ return methods.displayClusterDetail(feature); @@ -1047,6 +1058,9 @@ function transformCoordToLonLat(coord) { function(){ // our cluster must be at the center (if it exists after zoom) var pixel = settings.map.getPixelFromCoordinate(v.getCenter()); + if ($("#panel").is(":visible")){ + pixel[0] = pixel[0] + $("#panel").width() / 2; + } var new_feature; settings.map.forEachFeatureAtPixel( pixel, function(feat, layer){ @@ -2563,7 +2577,16 @@ function transformCoordToLonLat(coord) { {duration: settings.animation_duration, source: settings.view.getCenter()}) settings.map.beforeRender(pan); - settings.view.setCenter(center_position); + + if ($("#panel").is(":visible")){ + var delta_x = $("#panel").width() / 2; + settings.view.centerOn( + center_position, + [0, 0], + [delta_x, 0]); + } else { + settings.view.setCenter(center_position); + } // waiting for the pan to finish setTimeout(function(){ // to trigger autopan |