Marcus Schmidt: Zoom/Pan in SVG

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

  1. Tach Marcus,

    1. 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.

    1. 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

    1. 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

      1. Hallo,

        ASV 6 Beta Plugin,

        Bitte???

        Grüße
        Thomas

        1. 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

      2. 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