XML-Dateien dynamisch nachladen

  • Hallo,
    besteht die Möglichkeit externe XML-Dateien per Aktion dynamisch nachzuladen?
    Die Aktion loadpano setzt die aktuellen Panoramabilder leider zurück. Ich suche also eine Aktion, die sich im Grunde wie das XML-Tag include verhält.
    Gruß

  • Hi,

    leider verstehe ich Deine Frage nicht so ganz, Thimo. Was meinst Du damit das die aktuellen Panobilder beim loadpano-tag zurückgesetzt werden?!
    Die Möglichkeit eine XML dynamisch zu laden gibt es aktuell jedenfalls leider nicht, hab auch vor kurzem nach dieser Möglichkeit gesucht. Sämtliche per include eingebundenen XMLs werden gleich zu Beginn geladen. Du kannst alternativ höchstens den include-Befehl innerhalb einer Szene nutzen, so wird die XML erst beim Start dieser Szene mitgeladen.

    Wenn Du etwas näher erklärst was genau Du erreichen möchtest, könnte man Dir eher helfen.

    Gruß
    Nupsi

  • Mit loadxml kann man nur xml code direkt nachladen, aber keine externen Dateien.
    Beim loadpano wird das Pano neu geladen, das ist korrekt, da dieser Befehl auch dafür da ist.

    Wie nupsi schon schrieb, kannst Du externe Dateien (XMLs) nur mittels include einbetten, z.B. beim Panowechsel.
    Es hängt jetzt natürlich davon ab, was Du bewerkstelligen willst.
    U.U. kann man einige auch per styles oder ein Flashplugin abwickeln.

  • Also eigentlich möchte ich einfach bestimmte Hotspots und/oder Plugins nachladen. Das würde über eine dynamische include-Anweisen toll funktionieren, sofern es eine solche Aktion denn gäbe. Oder bekommt man die Funktion loadpano irgendwie dazu, die aktuellen Panoramabilder beizubehalten? Das wäre dann eine Alternative.

    Edited once, last by Thimo (November 10, 2011 at 6:17 PM).

  • Du kannst alternativ höchstens den include-Befehl innerhalb einer Szene nutzen, so wird die XML erst beim Start dieser Szene mitgeladen.


    Das habe ich jetzt mal versucht. Aber anscheinend werden die include-Anweisungen einer Szene bereits sofort beim Parsen geladen. Obwohl es eigentlich in der Doku anders beschrieben ist.

  • Plugins und Hotspots lassen sich über eine action jederzeit per "addplugin"/"addhotspot" und "removeplugin"/"removehotspot" hinzufügen bzw. entfernen. Bin nicht am Rechner, daher kann ich Dir zum szenenabhängigen include gerade leider nicht mehr sagen. Ich schau morgen frueh mal etwas genauer nach, falls es sich bis dahin nicht schon erledigt hat...

    Gruss
    Nupsi

  • Wie ich eben festgestellt habe, verwirft die Funktion loadscene ebenfalls das aktuelle Panoramabild. Also ist das leider auch nicht brauchbar, selbst wenn das mit der include-Anweisung funktionieren würde. Mit loadxml('<include url="..." />') ist es übrigens das gleiche.
    Klar, man könnte das mittels addhotspot über JavaScript und Ajax lösen. Aber das ist natürlich schon sehr umständlich.

  • Musst Du die Plugins/Hotspots denn unbedingt außerhalb von krpano nachladen? Und worum geht es Dir denn ganz speziell, darum Grafiken erst zu einem ganz bestimmten Zeitpunkt nachzuladen um Ladezeiten zu minimieren und/oder speicher zu sparen, oder generell darum nicht immer alle plugins gleich einzubinden? Beides lässt sich auch in krpano und in XML gut bewerkstelligen.

    Ein kleines Beispiel wäre hilfreich dabei Dir helfen zu können *wink*

    Gruß
    Nupsi

  • Genau so ist es. Es handelt sich um knapp 500.000 Hotspots. Die kann ich schlecht alle gemeinsam laden.
    Zunächst möchte ich einfach eine Tour erstellen, die einen zufällig gewählten Hotspot lädt und anzeigt, eine Beschreibung einblendet und schließlich zum nächsten zufälligen Hotspot geht. Das funktioniert auch alles problemlos mittels loadpano, bis auf die Panoramabilder selbst.
    Ein zusätzlicher Flag für loadpano wäre wünschenswert: KEEPPANO. Bzw. sollte das aktuelle Panorama schlicht beibehalten werden, sofern das neue XML-Dokument kein image-Tag enthält.

  • Mal davon abgesehen das ich mir kaum vorstellen kann wie das mit einer halben Million Hotspots funktionieren soll, bleibt bei so einer Zahl natürlich nur die Möglichkeit die Hotspots per <action> zu setzen. Ich vermute mal Du setzt beinahe pro Pano-Pixel einen Hotspot?! Zumindest kann ich mir nicht vorstellen das Du 500k Hotspots per Hand setzt!? Da würde ich mir eine inkrementelle Funktion schreiben welche einen HS setzt, den Zähler bei jedem Durchgang um 1 hochsetzt, die Werte einer Variable für die Position XY um den gewünschten Wert versetzt und dann die Funktion neu startet, bis alle 500k HS gesetzt sind.

    Das Pano möchte ich dann aber auch sehen wenn es fertig ist *g*

    Gruß
    Nupsi

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!