Zoom/Pan in SVG
Marcus Schmidt
- javascript
0 svg4you0 Marcus0 Thomas J.S.0 Marcus
0 svg4you
Hallo,
ich habe 2 JavaScriptfunktionen, die Zoom/Pan mit Hilfe von Buttons innerhalb einer SVG Grafik ermöglichen sollen. Davon funktioniert nur die Zoomfkt. im Internet Explorer (Adobe SVG Plugin 3.0 installiert). Im Firefox funktioniert keine von beiden Fkt.
1. Ist es möglich das SVG Plugin in Firefox zu integrieren?
2. Kann mir jemand mit der Pan-Fkt helfen?
Hier der Code:
function pan(k1,k2)
{var svgdoc=parent.frames["unten"].embeds[0].getSVGDocument();
var root=svgdoc.getRootElement;
var old_scale=root.currentScale;
if (k1!=0)
{old_x=root.currentTranslate.x;
x=old_x+k1*20;root.currentTranslate.x=x;
}
else
{old_y=root.currentTranslate.y;
y=old_y+k2*20;root.currentTranslate.y=y;
}
Ich verwende Buttons in einem Nachbarframe mit denen ich auf die Fkt per onclick zugreifen will. K1 ist der Parameter für die X-Verschiebung, K2 für die Y-Verschiebung.
Greets
Marcus
Tach Marcus,
- Ist es möglich das SVG Plugin in Firefox zu integrieren?
Im Prinzip ja ...
Rufe about:config auf und setze svg.enabled auf false. Kopiere die Plug-in DLLs des ASV in das plugins-Verzeichis des FF. Starte ihn neu und teste mittels about:plugins die Verfügbarkeit.
... aber:
Gerade die beabsichtigte Kommunikation zwischen eingebundenem SVG und dem HTML-Kontext dürfte scheitern. Das war für Netscape 4.x und den IE konzipiert.
- Kann mir jemand mit der Pan-Fkt helfen?
var root=svgdoc.getRootElement;
^^^
proprietäre get-Funktion des ASV!
besser: svgdoc.rootElement bzw. svgdoc.documentElement
var old_scale=root.currentScale;
if (k1!=0)
{old_x=root.currentTranslate.x;
x=old_x+k1*20;root.currentTranslate.x=x;
}
Das sollte funktionieren, wobei es kürzer geht (wenn die old_x-Variable nicht weiter von Belang ist):
root.currentTranslate.x += k1*20;
Ansonsten wäre eine Verschiebung von Objekten auch mittels transform-Attribut und Zuweisung von translate(dx,dy) möglich.
Man liest sich,
svg4you
Hallo svg4you
Gerade die beabsichtigte Kommunikation zwischen eingebundenem SVG und dem HTML-Kontext dürfte scheitern. Das war für Netscape 4.x und den IE konzipiert.
Besten Dank! Jetzt funktioniert auch die "Pan" Funktion. Allerdings nur im IE mit dem ASV 3.0 wie du schon sagtest.
Das mit dem Plugin hat auch geklappt im Firefox, allerdings nur das
ASV 6 Beta Plugin, das ASV 3 funktioniert bei mir im Firefox nicht, jedenfalls stürzt der dann ab. Nur leider geht mit diesem 6er Plugin auch nicht die Zoom und Pan Funktion. Gibt es denn irgend ne Möglichkeit die Zoom und Pan Funktionen auch im Firefox wenn auch auf andere Art und Weise zum Laufen zu bringen?
Gruß Marcus
Hallo,
ASV 6 Beta Plugin,
Bitte???
Grüße
Thomas
Hallo,
ASV 6 Beta Plugin,
gut ich glaub das heisst nur ASV 6.0! Jedenfalls verwende ich dieses Plugin hier im Firefox:
http://www.adobe.com/svg/viewer/install/beta.html
und die SVGs werden dann auch im Firefox richtig gerendert, allerdings nach wie vor eben kein Zoom oder Pan über externe Buttons ausgeführt!
Gruß
Marcus
Tach Marcus,
Jetzt funktioniert auch die "Pan" Funktion. Allerdings nur im IE mit dem ASV 3.0 wie du schon sagtest.
Baue die Zoom- und Pan-Buttons in das SVG-Dokument ein und nimm die Buttons selbst von diesen Operationen aus (d. h. beim Zoomen mit 1/zoomfaktor "gegenzoomen" und beim Verschieben mit negativen [x,y]-Werten gegensteuern).
Mehr fällt mir dazu nicht ein, aber vielleicht haben die Kartografen etwas zu bieten.
Man liest sich,
svg4you