Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Panorama Community. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

lichttraeumer

Power-User

  • »lichttraeumer« ist der Autor dieses Themas

Beiträge: 121

Wohnort: Waldbronn

Beruf: Business Engineer

  • Nachricht senden

1

Mittwoch, 30. Januar 2013, 22:31

Krpano und Bingmaphotspots

Hallo zusammen,

es kann schon sein, dass das Problem mal wieder vor dem PC sitzt, aber ohne Feedback von aussen vermag ich das aktuell nicht festzustellen.

Ich habe eine kleine virtuelle Test Tour mit dem neuen Vtour Normal Droplet von Krpano 1.8.15 erstellt.

Mit der Angbe der lat und lng Werte pinselt die Action "skin_addmapspots" aus der vtourskin.xml ja auch brav die Standard Mapspots auf die Karte.

<action name="skin_addmapspots">
for(set(i,0), i LT scene.count, inc(i),

if(scene[get(i)].lat,
txtadd(spotname, 'spot', get(i));
txtadd(spotclickevent, 'activatespot(',get(spotname),'); loadscene(', get(scene[get(i)].name), ',null,MERGE,BLEND(1)); skin_updatescroll(); delayedcall(0.5,skin_showmap(false));');
copy(scene[get(i)].mapspotname, spotname);
if(skin_settings.tooltips_mapspots, txtadd(spothoverevent,'showtext(',get(scene[get(i)].title),',SKIN_TOOLTIPS)'); , set(spothoverevent,null); );
addspot(get(spotname), get(scene[get(i)].lat), get(scene[get(i)].lng), get(scene[get(i)].heading), false, get(spotclickevent), get(spothoverevent));
);
);
activatespot(spot0);
zoomToSpotsExtent();
</action>

Soweit so gut ... nun möchte ich aber z.B. für besondere Punkte eigene, jeweils unterschiedliche Grafiken für die Kartenhotspots einbinden.
Und zwar am liebsten so, dass ich hinter die schon vorhandenen Angaben im "<scene name="" .. lng="" heading=""> Tag einen Schalter z.B. skin="grafik-a" oder skin="grafik-b" setze, den die o.g. action denn auswertet und mir entsprechend die jeweilige Grafik auf der Karte zur Laufzeit einbindet.
Ich möchte gene diese action gerne erweitern, um zu verhindern in jeder scene die Mapspots immer setzen zu müssen.

Was ich auch nicht verstehe, ist der DEFAULT Wert beim spotstyle Tag:
<spotstyle name="DEFAULT" url="vtourskin_mapspot.png" activeurl="vtourskin_mapspotactive.png" edge="bottom" x="-5" y="-8" scale="0.5" />

Die Doku schweigt sich (ausser der Erwähnung des Wertes) aus, oder hab ich was überlesen ?
Könnte ich an zentraler Stelle / generisch vielleicht damit meine gewünschten unterschiedlichen Mapspotgrafiken steuern ?

Danke für Eure Tipps ....
Deine Zeit ist begrenzt, also verbrauche sie nicht, um das Leben anderer zu leben.

2

Donnerstag, 31. Januar 2013, 08:44

Hallo lichttraeumer,

DEFAULT ist lediglich das standardmäßig verwendete Style für den Spot.

Eine Lösung könnte für dich aber so aussehen (ungetestet):


$this->cacheCode('[php]','<!-- Skin Layout -->

<layer name="skin_scroll_window" type="container" keep="true" align="leftbottom" width="100%" height="100%" x="0" y="60" y_shown="60" y_hidden="-2" maskchildren="true">
<layer name="skin_scroll_layer" type="container" align="leftbottom" width="100%" height="100%" x="0" y="-100%">
<layer name="skin_topborder" url="vtourskin.png" crop="2|0|60|12" align="topleft" edge="bottomleft" width="100%" height="12" x="0" y="0" enabled="false" />
<layer name="skin_title" url="%SWFPATH%/plugins/textfield.swf" align="lefttop" edge="leftbottom" width="95%" height="24" x="5" y="0" zorder="4" enabled="false" background="false" border="false" css="text-align:left; color:#FFFFFF; font-family:Arial; font-weight:bold; font-size:16px;" textshadow="1" visible="false" />
<layer name="skin_scroll_container" type="container" bgcolor="0x000000" bgalpha="0.5" align="lefttop" width="100%" height="100%" x="0" y="0" maskchildren="true">
<layer name="skin_thumbs" state="hidden" url="%SWFPATH%/plugins/scrollarea.swf" alturl="%SWFPATH%/plugins/scrollarea.js" direction="h" visible="false" align="top" width="100%" height="100" onloaded="skin_updatescroll();" />
<layer name="skin_map" state="hidden" url="" flash_url="%SWFPATH%/plugins/bingmaps.swf" html5_url="%SWFPATH%/plugins/bingmaps.js" visible="false" align="lefttop" width="100%" height="50%" x="0" y="0" zorder="1" lat="48.052048" lng="8.968489" zoom="22" bgalpha="0" maptype="satellite" onmapready="skin_addmapspots();">
<maptypecontrol visible="true" align="righttop" x="5" y="5" buttonalign="v" />
<spotstyle name="DEFAULT" url="vtourskin_mapspot.png" activeurl="vtourskin_mapspotactive.png" edge="bottom" x="-5" y="-8" scale="0.5" />
<spotstyle name="grafik-a" url="grafik-a.png" activeurl="grafik-a.png_mapspotactive.png" edge="bottom" x="-5" y="-8" scale="0.5" />
<spotstyle name="grafik-b" url="grafik-b.png" activeurl="grafik-b_mapspotactive.png" edge="bottom" x="-5" y="-8" scale="0.5" />
<layer name="skin_map_androidzoom_in" url="vtourskin.png" effect="glow(0,0.5);" crop="9|512|46|64" align="right" x="0" y="-40" zorder="2" ondown="layer[skin_map].zoomin(); skin_buttonglow(get(name));" onup="skin_buttonglow(null);" devices="Android+Tablet+Flash" />
<layer name="skin_map_androidzoom_out" url="vtourskin.png" effect="glow(0,0.5);" crop="73|512|46|64" align="right" x="0" y="+40" zorder="2" ondown="layer[skin_map].zoomout(); skin_buttonglow(get(name));" onup="skin_buttonglow(null);" devices="Android+Tablet+Flash" />
</layer>
</layer>
</layer>
</layer>


<action name="skin_addmapspots">
for(set(i,0), i LT scene.count, inc(i),
if(scene[get(i)].lat,
txtadd(spotname, 'spot', get(i));
txtadd(spotevent, 'activatespot(',get(spotname),'); loadscene(', get(scene[get(i)].name), ',null,MERGE,BLEND(1)); skin_updatescroll(); delayedcall(0.5,skin_showmap(false));');
copy(scene[get(i)].mapspotname, spotname);
addspot(get(spotname), get(scene[get(i)].lat), get(scene[get(i)].lng), get(scene[get(i)].heading), get(scene[get(i)].spotstyle), false, get(spotevent));
);
);
activatespot(spot0);
zoomToSpotsExtent();
</action>

<scene name="scene_01" title="..." onstart="..." thumburl="panos/01.tiles/thumb.jpg" lat="xx.xxxxx" lng="xx.xxxxxx" heading="xxx" spotstyle="grafik-a">')

lichttraeumer

Power-User

  • »lichttraeumer« ist der Autor dieses Themas

Beiträge: 121

Wohnort: Waldbronn

Beruf: Business Engineer

  • Nachricht senden

3

Donnerstag, 31. Januar 2013, 09:33

Hallo Horsty,

danke ... ich teste das heute Abend gleich mal.

Wen das klappt wäre das ja echt super einfach gewesen, und ich habe mir mal wieder viel zu viele Gedanken gemacht ...


Grüße vom Träumer.
Deine Zeit ist begrenzt, also verbrauche sie nicht, um das Leben anderer zu leben.

4

Donnerstag, 31. Januar 2013, 09:45

Hi,

die Lösung von Horsty ist schon fast richtig - es muss nur statt der addspot(...) Action, die addstylespot(...) Action verwendet werden (die Parameter selbst dürften aber schon stimmen). ;)

Zusätzlich gäbe es es noch die Möglichkeit auch die addimagespot(...) Action zu verwenden - damit könnte direkt eine Grafik pro Spot festgelegt werden.
z.B. wenn die <scene> Elemente noch um ein 'spoturl' Attribut mit einer Grafik erweitert werden:
$this->cacheCode('[php]','addimagespot(get(spotname), get(scene[get(i)].lat), get(scene[get(i)].lng), get(scene[get(i)].heading), DEFAULT, get(scene[get(i)].spoturl), false, get(spotclickevent), get(spothoverevent));')

Schöne Grüße,
Klaus

lichttraeumer

Power-User

  • »lichttraeumer« ist der Autor dieses Themas

Beiträge: 121

Wohnort: Waldbronn

Beruf: Business Engineer

  • Nachricht senden

5

Mittwoch, 4. September 2013, 08:18

Hallo zusammen,

wenn auch spät ... danke für eure Hilfe !
Das Projekt lag ein paar Monate auf Eis, so dass ich gestern erst wieder zum erfolgreichen (!) testen Eurer Posts gekommen bin.

Grüße vom Träumer.
Deine Zeit ist begrenzt, also verbrauche sie nicht, um das Leben anderer zu leben.

lichttraeumer

Power-User

  • »lichttraeumer« ist der Autor dieses Themas

Beiträge: 121

Wohnort: Waldbronn

Beruf: Business Engineer

  • Nachricht senden

6

Montag, 9. September 2013, 15:57

Hello again,

so ... eine Frage habe ich nun noch :)

Analog zu der Diskussion im KRPANO Forum (http://krpano.com/forum/wbb/index.php?pa…48622#post48622 und http://www.krpano.com/forum/wbb/index.ph…d&threadID=5475) ist es mir auch vergönnt, Mapspots nach Rubriken anzuzeigen.

Da ich die "Standard" Action benutze:

$this->cacheCode('[php]','
<action name="skin_addmapspots">
for(set(i,0), i LT scene.count, inc(i),
if(scene[get(i)].spotstyle,
txtadd(spotname, 'spot', get(i));
txtadd(spotclickevent, 'activatespot(',get(spotname),'); loadscene(', get(scene[get(i)].name), ',null,MERGE,BLEND(1)); skin_updatescroll(); delayedcall(0.5,skin_showmap(false));');
copy(scene[get(i)].mapspotname, spotname);
if(skin_settings.tooltips_mapspots, txtadd(spothoverevent,'showtext(',get(scene[get(i)].title),',SKIN_TOOLTIPS)'); , set(spothoverevent,null); );
addstylespot(get(spotname), get(scene[get(i)].lat), get(scene[get(i)].lng), get(scene[get(i)].heading), get(scene[get(i)].spotstyle), false, get(spotclickevent), get(spothoverevent));
);
);
activatespot(spot0);
zoomToSpotsExtent();
</action>

')

möchte ich gerne, dass "get(scene[get(i)].spotstyle)" (oder eben eine andere "wie auch immer erzeugte Variable") z.B. nur die Mapspots von z.B. "Thema A" auf der Karte anzeigt, aber eben NICHT alle anderen Mapspots.
Alle Beispiele die man im KRPANO Forum -oder auch sonstwo- findet, sind irgendwie "unschön aufgebaut", da man beim hinzufügen, oder löschen von Mapspots, Panoramen ... immer echt Arbeit hat, den Quelltext anzupassen.
Das in die o.g. Schleife einzubauen wäre viel generischer!

Da die Alpha Funktion für Mapspots noch nicht verfügbar ist, und ich mit dem Bauen einer IF - Abfrage (http://krpano.com/forum/wbb/index.php?pa…48596#post48596) nicht wirklich erfolgreich war ... hat jemand das Thema in meinem Sinne umgesetzt / es versucht, und kann mir ein wenig auf die Sprünge helfen ?


Grüße vom Träumer.
Deine Zeit ist begrenzt, also verbrauche sie nicht, um das Leben anderer zu leben.