map panoaufrufe eleganter/effizienter coden?

  • hi

    da ich mit den variablen und deren nutzung etwas auf kriegsfußstehe, hier meine frage:

    bis dato rufe ich meine panos (via spots) auf der gmaps karte so auf. jeder map point hat seine eigene action:

    mapspot:

    und die dazugehörige action:

    Code
    <action name="load__008_d01_sporgasse">
    		action(update_map_spot,_008_d01_sporgasse);
    		action(load_map_pano,008_d01_sporgasse.xml);
    	</action>

    bei 70 panos oder mehr entsteht dadurch schon ein ziemlich langes und großes file nur mit diesen actions. jetzt hab ich mich gefragt, ob man das og. code-konstruct nicht wesentlich einfacher und effizienter mit dem einsatz von variablen lösen könnte? eigentlich müßte doch die aufrufrutine für alle panos (und mit hilfe von variablen) in ein paar zeilen code zu lösen sein?

  • Hi,

    ja, da gebe es mehrere Möglichkeiten,

    z.B. wenn alle Namen der Spots und die Namen des Panos gleich wären,
    könnte man einen Code wie diesen verwenden:

    Code
    <spot name="_008_d01_sporgasse"
      	...
      	onclick="spotclick(get(name), 227.86, -0.12, 90);"
      	...
      	/>

    Dabei wird hier des Name des Spots '_008_d01_sporgasse' als 1. Parameter und die lookat Positionen als 2-4. Parameter an die "spotclick" Action übergeben.

    Diese könnte dann z.B. so aussehen:

    Code
    <action name="spotclick">
      update_map_spot(%1);
      load_map_pano(%1.xml);
      lookat(%2,%3,%4);
      plugin[ga].trackevent(Gmaps, Hotspots, %1);
      plugin[ga].trackpageview(%1);"
    </action>

    In dieser wird dann die "update_map_spot" Action mit dem Spotnamen aufgerufen. Dann eine XML geladen welche mit Spotname + ".xml" benannt ist. Das lookat mit den Parametern aufgerufen und letztendlich die trackevent/trackpageview Aufrufe mit dem Spotnamen.

    Da in deinem Beispiel der Name der XML Datei aber ohne das '_' Zeichen am Anfang beginnt und beim "trackpageview" Aufruf der Name ebenfalls ohne '_' aber dafür mit '/' am Anfang verwendet wird, müsste dieses Zeichen im diesem Fall noch herausgefiltert werden. Der gesamte "spotclick" Actioncode sehe dann z.B. so aus:

    Dadurch wird des dann z.B. möglich für alle Spots den selben onclick Aufruf zu verwenden, bei welchen sich nur die lookat Koordinaten unterscheiden.

    Schöne Grüße,
    Klaus

  • hallo klaus,

    danke für dein schnelles feedback *thumbsup*

    leider bekomme ich bei beiden varianten folgenden error: "FATAL: null.xml - loading error (IO Error)"

    spotname und xml habe ich gleich benannt. zb:

    Code
    <spot name="_006_d01_sporgasse_ballhausgasse" style=""
                      	active="false"
                      	heading="-90"
                      	lat="47.07325589272602"
                      	lng="15.439712405204773"
                      	onclick="spotclick(get(name),194.04,1.58,90);"
                      	onhover="showtext(Sporgasse/Ballhausgasse);"
                 	/>

    die verwendete action von deinem (ersten) beispiel:

    Code
    <action name="spotclick">
      update_map_spot(%1);
      load_map_pano(%1.xml);
      lookat(%2,%3,%4);
      plugin[ga].trackevent(Gmaps, Hotspots, %1);
      plugin[ga].trackpageview(%1);"
    </action>

    die zuladende xml lautet in diesem fall "_006_d01_sporgasse_ballhausgasse.xml"

    (der underscore "_" befindet sich bei mir deswegen am spotname anfang, da offensichtlich der spotname nicht mit einer zahl anfangen darf. bezeichne ich den spotname ohne underscore und mit einer ziffer zu beginn, wird der spot nicht auf der map angezeigt)

    kannst du mir bitte hier nochmals weiterhelfen?

  • Hi,

    ist die krpano Version und die Google Maps Plugin Version aktuell?
    Ich frage da in älteren Versionen der Zugriff auf das "name" Attribut des <spot> Elements noch nicht möglich war...

    Das mit dem Underscore selbst ist schon okay so, eine Ziffer zu Beginn ist allerdings nicht erlaubt, da der Zahlenwert dort dann als Index interpretiert werden würde.

    Schöne Grüße,
    Klaus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!