多个弹出框一直是客户想要的东西,但是网上的都比较简单。infoWindow 虽然可以弹出复杂的框,但是,只能够是一个。
所以使用了InfoSymbol.
?
首先InfoSymbol只是一个graphic,所以,可以保存在graphicsLayer,然后在使用graphicsLayer一些特性,就可以实现关闭按钮,移动等功能。
核心代码 ,当我们点击一个图标的时候。
?
?graphicsLayer = new GraphicsLayer();
??????????graphicsLayer.id="qbbtext";
??????????var arrayCollection:ArrayCollection = new ArrayCollection();
??????????arrayCollection.addItem(graphicsLayer);
??????????arrayCollection.addItem(gr.attributes);
??????????arrayCollection.addItem(layerId);
??????????arrayCollection.addItem(gr);
??????????arrayCollection.addItem(map);
??????????var infosymbol:InfoSymbol? = new InfoSymbol();
??????????
??????????var infoSymbolFactory:ClassFactory = new ClassFactory(MyComponent);
??????????
??????????infoSymbolFactory.properties= {id:"textArea",text: gr.attributes.DEVICENAME,dataProvider:arrayCollection};
??????????//这句代码保证弹出框是在graphic上面的。
??????????gr.autoMoveToTop=true;
??????????
??????????infosymbol.infoRenderer=infoSymbolFactory;
??????????
??????????//保证只弹出一次信息框
??????????if(Config.arr.indexOf("qbbs"+gr.id,0)==-1){
???????????var grap:Graphic = new Graphic(gr.geometry,infosymbol);
???????????grap.id="qbbs"+gr.id;
???????????graphicsLayer.add(grap);
???????????Config.arr.push(grap.id);
???????????map.addLayer(graphicsLayer);
}
至于MyComponent 类是定义的模板类型,也就是弹出信息框的内容MyComponent extends UIComponent
要去下载相关的代码API,去构造自己想要的界面。