xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dylan Browne" <dbro...@mango-solutions.com>
Subject RE: Accessing event coordinates when zoomed
Date Tue, 13 Jun 2006 18:03:06 GMT
Thanks Andreas for the reply,

I've tried to put that into practice, but doesn't seem to be quite working.

I do need to develop these tooltips rather than use the existing supported
ones as they may become fairly intricate in the future.

We only need to support Adobe Viewer, so I've tried to use some JS similar
to that in the mapApp.js as suggested.

I call it like this...

function getMyCoords(evt){
      // Pass in the event from the screen
	var thePoint = calcCoord(evt);
	// get the zoomed/panned values from the point      
	x = thePoint.getX();
      y = thePoint.getY();

... is this the correct way to get the real values? Its doesn't seem to work
when zoomed or not. The values that are returned from this seem to very
small compared to the locations I'd expect in the document... EG values less
than 10 where I'd expect values in the hundreds. If this syntax is correct
I'll look elsewhere for where my problem lies.

Thanks again for any (more) help,

Kind regards,

-----Original Message-----
From: Andreas Neumann [mailto:neumann@karto.baug.ethz.ch] 
Sent: 13 June 2006 15:57
To: batik-users@xmlgraphics.apache.org
Subject: Re: Accessing event coordinates when zoomed

Hi Dylan,

.getScreenCTM() is your friend here.

Here is some code:

function calcCoord(evt) {
    var svgPoint = document.documentElement.createSVGPoint();
    svgPoint.x = evt.clientX;
    svgPoint.y = evt.clientY;
    var matrix = evt.target.getScreenCTM(); //alternatively use a 
different node reference here instead of evt.target, f.e. if you want to 
calculate to a different node in the hierarchy
    svgPoint = svgPoint.matrixTransform(matrix.inverse());
   return svgPoint;

If you need standard tooltips, Batik already provides tooltips.

Unfortunately, the Adobe SVG viewer version 3 neither supports tooltips 
nor .getScreenCTM.

For this viewer there is a workaround:

And here is a tooltip example that works in all browsers:

All the best,

Dylan Browne wrote:

>(Not strictly a Batik Posting, although I am using Batik DOM to create my
>SVG, so I hope that almost counts...!)
>I am using JavaScript "evt.clientX" and "evt.clientY" (I have also tried
>"screenX") to retrieve the co-ordinates of a mouseover event, and some
>code then displays a label using these coordinates. (In essence, I'm
>creating a souped-up tool-tip). 
>This works fine in standard view, but once the SVG document has been
>the co-ordinates returned are no longer relative to the original
>document,(as, of course, I would expect :). I'd be grateful if someone
>point me towards the correct JS syntax so the coordinates I return are in
>relation to my zoomed/panned document.
>Thanks a lot in advance for any help,
>To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
>For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org

Andreas Neumann
Institute of Cartography
ETH Zurich
Wolfgang-Paulistrasse 15
CH-8093  Zurich, Switzerland

Phone: ++41-44-633 3031, Fax: ++41-44-633 1153
e-mail: neumann@karto.baug.ethz.ch
www: http://www.carto.net/neumann/
SVG.Open: http://www.svgopen.org/
Carto.net: http://www.carto.net/

To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org

To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org

View raw message