From aa7c7d771da1ac05960bcbd27cb72aadd1ad0e3d Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Tue, 31 May 2011 23:19:53 +0530 Subject: [PATCH] Zoom relative to the cursor position --- js/tbl_gis_visualization.js | 28 +++++++++++++++++++++------- 1 file 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(); });