多个弹出框一直是客户想要的东西,但是网上的都比较简单。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,去构造自己想要的界面。