Hallo,
als Neuling habe ich nun schon einiges geschafft, komme aber an einem Punkt nicht weiter. Mir sind vermutlich einige Grundlagen nicht ganz klar und das trial&error-Prinzip bringt mich gerade nicht mehr weiter.
Also: ich habe eine Tour erstellt.Sie enthält Bilder einer Wohnung sowie Bilder der Umgebung draußen. In der Controlbar habe ich zwei Punkte hinzugefügt. Der eine bei click soll eine imagemap (Grundriss der Wohnung) einblenden, der andere eine googlemap. Auf beiden Maps sind spots gesetzt. Wenn ich auf einem Pano draußen bin, soll der jeweilige Ort bei googlemaps mit aktivem Spot angezeigt werden. In dem Fall soll in der imagemap kein Spot aktiv gekennzeichnet sein. Wenn ich mich in der Wohnung befinde, soll der jeweilige Spot in der Wohnung aktiv sein, auf der googlemap immer der gleiche, halt der Spot, der auf der Wohnungsadresse liegt.
Und dann soll noch bei jedem aktiven Spot ein Radarbild angezeigt werden. Der Radar in der Wohnung funktioniert, aber bei der googlemap geht's nicht. Und wenn ich mich draußen befinde, wird trotzdem in der imagemap ein Radar in der Ecke des Bildes angezeigt.
,
1. Problem: Entweder klappt es, dass bei klick die Karten eingeblendet werden, dann muss ich aber zweimal klicken, damit sie wieder ausgeblendet werden.
oder: ich muss zweimal klciken, damit sie eingeblendet werden, und dann nur einmal, damit sie ausgeblendet werden. Beides nur beim ersten Mal, später funktioniert es so, wie es soll.
2. Problem: Wie kriege ich den Radar richtig hin?
Der meiner Meinung nach entscheidende Code ist hier:
einmal in der vtourskin.xml:
die Buttons in der controlbar:
<layer name="skin_btn_map" style="skin_base|skin_glow"
crop="64|128|64|64" align="rightbottom" x="90" y="4" scale="0.5"
ondown2="skin_showthumbs(false); skin_showmap();" visible="true" />
<layer
name="skin_floormap" style="skin_base|skin_glow" crop="64|128|64|64"
align="rightbottom" x="130" y="4" scale="0.5"
ondown2="skin_showthumbs(false); skin_showfloor();" visible="true" />
und die actions:
<action name="skin_showmap">
if(%1 == null, if(layer[map1].state == 'closed', set(show,true), set(show,false)); , set(show,%1); );
mul(mh, layer[skin_scroll_layer].pixelheight, -1);
if(layer[skin_scroll_layer].y == -100%, copy(layer[skin_scroll_layer].y,mh));
if(show,
tween(layer[skin_logo].alpha, 0.0, 0.25, default, set(layer[skin_logo].visible,false));
tween(layer[skin_thumbs_container].alpha, 0.0, 0.25, default, set(layer[skin_thumbs_container].visible,false));
set(layer[map1].visible, true);
tween(layer[map1].alpha, 1.0, 0.25);
set(layer[map1].state, 'opened');
,
set(layer[map1].state, 'closed');
set(layer[skin_logo].visible, true); tween(layer[skin_logo].alpha, 1.0, 0.25);
tween(layer[skin_scroll_layer].y, get(mh), 0.5, easeOutQuint, set(layer[map1].visible,false) );
);
</action>
<action name="skin_showfloor">
if(%1 == null, if(layer[mapcontainer].state == 'closed', set(show,true), set(show,false)); , set(show,%1); );
mul(mh, layer[skin_scroll_layer].pixelheight, -1);
if(layer[skin_scroll_layer].y == -100%, copy(layer[skin_scroll_layer].y,mh));
if(show,
tween(layer[skin_thumbs_container].alpha, 0.5, 0.25, default, set(layer[skin_thumbs_container].visible,false));
set(layer[mapcontainer].visible, true);
tween(layer[mapcontainer].alpha, 1, 0.25);
set(layer[mapcontainer].state, 'opened');
,
set(layer[mapcontainer].state, 'closed');
tween(layer[skin_scroll_layer].y, get(mh), 0.5, easeOutQuint, set(layer[mapcontainer].visible,false) );
);
</action>
Display More
und dann noch in der tour.xml:
googlemap:
<!--googlemap-->
<plugin name="map1" devices="html5"
url="plugins/googlemaps.js"
align="leftbottom" width="400" height="250" x="0" y="20"
keep="true"
maptype="normal"
lat="54.406394"
lng="10.220187"
zoom="14"
activespotenabled="false"
bgcolor="0x000000" bgalpha="0.0"
onmapready=""
onmaptypechanged=""
onmapmoved=""
onmapzoomed=""
visible="false"
>
<spotstyle name="style1" />
<spot name="mapspot1" active="false" url="skin/mappoint.png" lat="54.406394"
lng="10.220187" onclick="loadscene(scene_strasse, null, MERGE, BLEND(1));" />
<spot name="mapspot2" active="false" url="skin/mappoint.png" lat="54.406663"
lng="10.219490" onclick="loadscene(scene_strand1, null, MERGE, BLEND(1));"/>
<spot name="mapspot3" active="false" url="skin/mappoint.png" lat="54.406394"
lng="10.2203" onclick="loadscene(scene_zimmer, null, MERGE, BLEND(1));"/>
<positioncontrol visible="false" />
<zoomcontrol visible="false" />
<maptypecontrol visible="false" />
</plugin>
Display More
und imagemap:
<!-- the image map -->
<layer name="mapcontainer" keep="true" visible="false" type="container" bgcolor="0x000000" bgalpha="0.5" align="topleft" x="0" y="0" width="400" height="264">
<layer name="map" url="skin/floor.png" align="lefttop" x="4" y="4" width="390" height="256" handcursor="false">
<!-- radar mask container -->
<layer name="radarmask" type="container" align="lefttop" width="100%" height="100%" maskchildren="true">
<!-- radar plugin (zoder=1 and hidden at start) -->
<layer name="radar" visible="false"
url="plugins/radar.swf" alturl="plugins/radar.js"
align="lefttop" edge="center" zorder="1"
scale="1.0"
fillcolor="0xFFFFFF" fillalpha="0.4"
linecolor="0xFF0000" linewidth="0.5" linealpha="0.5"
headingoffset="0"
/>
<!-- the spots (zorder=2) -->
<layer name="floorspot1" url="skin/mappoint.png" align="lefttop" edge="center" x="163" y="124" zorder="2" onclick="loadscene(scene_zimmer, null, MERGE, BLEND(1));" />
<layer name="floorspot2" url="skin/mappoint.png" align="lefttop" edge="center" x="354" y="22" zorder="2" onclick="loadscene(scene_terrasse, null, MERGE, BLEND(1));" />
<layer name="floorspot3" url="skin/mappoint.png" align="lefttop" edge="center" x="55" y="134" zorder="2" onclick="loadscene(scene_schlafzimmer, null, MERGE, BLEND(1));" />
<layer name="floorspot4" url="skin/mappoint.png" align="lefttop" edge="center" x="165" y="168" zorder="2" onclick="loadscene(scene_bad, null, MERGE, BLEND(1));" />
<layer name="floorspot5" url="skin/mappoint.png" align="lefttop" edge="center" x="143" y="168" zorder="2" onclick="loadscene(scene_kueche, null, MERGE, BLEND(1));" />
<!-- activated spot image (zorder=3 and hidden at start) -->
<layer name="activespot" url="skin/mappointactive.png" align="lefttop" edge="center" ox="0" oy="0" zorder="3" visible="false" />
</layer>
</layer>
</layer>
Display More
und die Spot-Aktivierung:
<!-- activatespot action - %1 = the current spot, %2 = the current radar heading -->
<action name="activatespot">
<!-- copy the spot position to the radar and activespot position -->
copy(layer[radar].x, layer[%1].x);
copy(layer[radar].y, layer[%1].y);
copy(layer[activespot].x, layer[%1].x);
copy(layer[activespot].y, layer[%1].y);
<!-- set the radar heading -->
set(layer[radar].heading, %2);
<!-- show the radar and the activespot -->
set(layer[radar].visible, true);
set(layer[activespot].visible, true);
</action>
Display More
und dann noch die einzelnen scenes mit onstart="activatespot(floorspot1,50);" versehen.
Hier hatte ich versucht, die beiden spots auf den verschiedenen maps so aufzurufen:
onstart="activatespot(floorspot1,50);activatespot(mapspot1,50);"
geht das so?
naja, jedenfalls funktioniert das alles nicht so, wie es soll und ich wäre euch dankbar für ein paar Tipps!
Gruß