Zahlreiche Forumbeiträge haben mir geholfen, bingmaps einzubinden. Nun bin ich auf ein Problem gestossen, das ich auch durch intesives Nachlesen nicht lösen kann.
Codebeispiel:
Mit einer html Datei wird eine .xml-Datei aufgerufen, die maps und mehrere spots enthält. Die erste scene für loadscene() wird dabei
beim ersten Aufruf dynamisch übergeben (habe ich auch im Forum gelernt.) Davon ausgehend können dann in der map die verschiedenen spots aufgerufen werden. Es funktioniert soweit alles bis auf folgendes:
Problem 1. die scene, die beim 1. Aufruf (hier im Beispiel loadscene(spot1) - Zeile 5) geladen wird, wird nicht aktiv gesetzt, obwohl ich verschiedenste Codierungsvarianten mit activatespot durchgeführt habe. Wenn danach in der Map spot2 oder spot3 und dann wieder spot1 angeklickt werden, dann werden alle spots jeweils - wie geplant - aktiv gesetzt. Nur nicht beim 1. Aufruf von loadscene(spot1). Dasselbe gilt auch, wenn beim Start loadscene(spot2), bzw. spot3 übergeben wird.
Ich bin mir bei der Syntax nicht sicher, heisst es richtig :
set{plugin[map].activatespot(spot1)); oder nur plugin[map].activatespot(spot1); - es gibt keine Fehlermeldung - beides liefert dasselbe Ergebnis, bzw. keins.
Problem 2. Wenn 'positioncontrol' angeklickt wird, dann zentriert sich die Karte immer um spot1 (den 1. Aufruf). Egal, welchen spot1/2/3 ich in der map angewählt habe. Analog zentriert sich die Karte um spot2, wenn spot2 als erstes aufgerufen wurde. Auch hier habe ich verschiedene Varianten von setcenter() vergeblich ausprobiert.
Hat jemand die richtige Idee?
<krpano version="1.0.8.15" onstart="action(beginne)" >
<action name="beginne">
trace("Startpano", get(startpano));
if (startpano EQ "",
loadscene(spot1,null,MERGE,BLEND);
,
loadscene(get(startpano),null,MERGE);
);
</action>
<layer name="mapcontainer" type="container" bgcolor="0xFFFFFF" bgalpha="0.5" align="leftbottom" x="5" y="5" width="370" height="500" zorder="1" keep="true">
<plugin name="map" zorder="2" <!-- mit oder ohne keep="true" kein Unterschied -->
parent="mapcontainer"
url="bingmaps.swf" alturl="bingmaps.js"
align="leftbottom" x="0" y="0" width="98%" height="98%"
key="...xyz..."
maptype="SATELLITE"
activespotenabled="true"
zoom="10"
<!-- lat und lng weggelassen, wird später dynmisch geändert -->
>
<radar visible="true" dragable="false" size="300" alpha="0.1" fillcolor="0x00FFF00" fillalpha="1.0" linecolor="0x00FF00"
linealpha="0.5" linewidth="0.5" headingoffset="0" />
<spot name="spot1"
lat="47.616342" lng="1.516867"
onhover="showtext(spot1)"
onclick="loadscene(spot1,null,MERGE,BLEND(0.5)); activatespot(spot1); "/>
<!-- Schreibweise activatespot(47.616342,1.516867) oder activatespot() ändert nichts -->
<spot name="spot2"
lat="47.499418" lng="1.457343"
onhover="showtext(spot2)"
onclick="loadscene(spot2,null,MERGE,BLEND(0.5)); activatespot(spot2); " />
<spot name="spot3"
lat="47.546651" lng="1.515115"
onhover="showtext(spot3)"
onclick="loadscene(spot3,null,MERGE,BLEND(0.5)); activatespot(spot3);" />
<positioncontrol visible="true" />
</plugin>
</layer>
<scene name="spot1" onstart="action(startscene)" onmapready="action(initmap)" >
<action name="startscene" >
closemap(); <!-- beim Aufruf einer neuen panos soll die map unsichtbar sein -->
set(plugin[map].lat,47.616342); set(plugin[map].lng,1.516867);
</action>
<action name="initmap" >
<!-- habe verschiedene start-actions probiert, habe gelesen, dass man auf 'onmapready' warten soll -->
plugin[map].activatespot(spot1);
plugin[map].pantospot(spot1);
</action>
<preview url="preview_1.jpg" />
</scene>
<scene name="spot2" onstart="action(startscene)" onmapready="action(initmap)" >
<action name="startscene" >
closemap();
set(plugin[map].lat,47.499418); set(plugin[map].lng,1.457343);
</action>
<action name="initmap" >
plugin[map].setcenter(spot2);
plugin[map].activatespot(spot2);
plugin[map].pantospot(spot2);
<!-- andere Schreibweise probiert -->
</action>
<preview url="preview_2.jpg" />
</scene>
<scene name="spot3" onstart="action(startscene)" >
<action name="startscene" >
<!-- Variante: hier warte ich nicht auf 'onmapready' -->
closemap();
set(plugin[map].lat,47.546718); set(plugin[map].lng,1.514182);
set(plugin[map].setcenter(47.546718,1.514182);
plugin[map].activatespot(47.546718,1.514182);
<!-- set(plugin[map].activatespot(47.546718,1.514182)); geht auch nicht -->
plugin[map].pantospot(spot3);
</action>
<preview url="preview_3.jpg" />
</scene>
</krpano>
Display More