在swgis的flex應(yīng)用框架內(nèi)對(duì)于實(shí)時(shí)監(jiān)控和回放界面使用stackview進(jìn)行布局
1 <mx:ViewStack id="viewstack1" width="100%" height="100%" creationPolicy="all">
2 <s:NavigatorContent label="實(shí)時(shí)監(jiān)控" width="100%" height="100%" id="GisRealView">
3 <s:layout>
4 <s:VerticalLayout/>
5 </s:layout>
6 <ns1:PaneGisRealView width="100%" height="100%">
7 <ns1:layout>
8 <s:VerticalLayout/>
9 </ns1:layout>
10 </ns1:PaneGisRealView>
11 </s:NavigatorContent>
12 <s:NavigatorContent label="歷史回放" width="100%" height="100%" id="GisReplayView">
13 <s:layout>
14 <s:VerticalLayout/>
15 </s:layout>
16 <ns1:PaneGisReplayView height="100%" width="100%"/>
17 </s:NavigatorContent>
18
19 </mx:ViewStack>
stackview我通常習(xí)慣的設(shè)置為
creationPolicy="all" ,因?yàn)檫@樣的話stackview在初始化的時(shí)候?qū)?nèi)部的所有 NavigatorContent都將進(jìn)行初始化實(shí)例,如果不設(shè)置
creationPolicy的話,flex將在用戶切換NavigatorConent時(shí)創(chuàng)建實(shí)例(lazy create).
這本是個(gè)簡(jiǎn)單而且方便的設(shè)置行為,沒(méi)想到在第一個(gè)view1的地圖內(nèi)顯示feature位置都是okay的,但是切換到第二個(gè)view2的地圖顯示feature,發(fā)現(xiàn)feature對(duì)應(yīng)的位置在x方向上都做了偏移。
view1.map顯示linestring feature:

view2.map顯示的linestring feature:

相同的linestring在兩個(gè)map上顯示居然位置產(chǎn)生了偏移,這個(gè)問(wèn)題困擾了一整天和一個(gè)晚上,苦思不得其解,采用排斥法,切換view1,view2在stackview中排布次序,居然view2顯示就正常了。
然后就聯(lián)想到了createPolicy這個(gè)屬性了,一切還原,去除這個(gè)屬性(默認(rèn):lazy create),跑一下居然好了!
奇怪奇怪,沒(méi)時(shí)間具體去研究這個(gè)屬性在flex里面的實(shí)現(xiàn)機(jī)制了,就這樣吧!