diff options
author | Madhura Jayaratne <madhura.cj@gmail.com> | 2011-05-31 21:49:53 +0400 |
---|---|---|
committer | Madhura Jayaratne <madhura.cj@gmail.com> | 2011-05-31 21:51:31 +0400 |
commit | aa7c7d771da1ac05960bcbd27cb72aadd1ad0e3d (patch) | |
tree | 5e8b64f5eebd4450face05f0654d69230f04f149 /js/tbl_gis_visualization.js | |
parent | e71db6482c69d7a2ad75bc25b3b8b9c01ba5bc8c (diff) |
Zoom relative to the cursor position
Diffstat (limited to 'js/tbl_gis_visualization.js')
-rw-r--r-- | js/tbl_gis_visualization.js | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/js/tbl_gis_visualization.js b/js/tbl_gis_visualization.js index a834d51190..2d92e0b8cb 100644 --- a/js/tbl_gis_visualization.js +++ b/js/tbl_gis_visualization.js @@ -10,7 +10,8 @@ var x = 0; var y = 0; var scale = 1; -var orig_scale = 1; +var shiftX; +var shiftY; var svg; /** @@ -63,6 +64,9 @@ function zoomAndPan() { * Displaying tooltips for GIS objects. */ $(document).ready(function() { + shiftX = $('#placeholder svg').attr('width') / 6; + shiftY = $('#placeholder svg').attr('height') / 6; + $('#placeholder').svg({ onLoad: function(svg_ref) { svg = svg_ref; @@ -76,13 +80,18 @@ $(document).ready(function() { if (delta > 0) { //zoom in scale *= 1.5; + shiftX *= 1.5; + shiftY *= 1.5; + x -= shiftX; + y -= shiftY; zoomAndPan(); } else { //zoom out scale /= 1.5; - if (scale <= 0.5 * orig_scale) { - scale = 0.5 * orig_scale; - } + x += shiftX; + y += shiftY; + shiftX /= 1.5; + shiftY /= 1.5; zoomAndPan(); } return true; @@ -106,6 +115,10 @@ $(document).ready(function() { $('#placeholder').live('dblclick', function() { scale *= 1.5; + shiftX *= 1.5; + shiftY *= 1.5; + x -= shiftX; + y -= shiftY; zoomAndPan(); }); @@ -113,9 +126,10 @@ $(document).ready(function() { e.preventDefault(); //zoom out scale /= 1.5; - if (scale <= 0.5 * orig_scale) { - scale = 0.5 * orig_scale; - } + x += shiftX; + y += shiftY; + shiftX /= 1.5; + shiftY /= 1.5; zoomAndPan(); }); |