Adobe Flex:从XMLList访问特定字段

时间:2012-05-29 01:19:37

标签: xml flex google-maps

我目前有数据从我的数据库返回并存储在XMLList中。在数据库的结果处理程序中有一个循环,它将标记放在Google Map上,自定义图标取决于类型。当我单击标记时,它会打开一个信息窗口,并显示包含XMLList数据的HTML。我也希望点击标记将数据传递给我拥有的标签,但我似乎无法。 在这个函数之外我已经声明了以下内容: var dict=new flash.utils.Dictionary();

这是我到目前为止的代码:

protected function getBusiness_resultHandler(event:ResultEvent):void { var xml:XML = new XML(event.result as String); testList = xml.user;

            for (var i:int=0; i<testList.length(); i++) 
            {

                if (testList[i].type=="Hotel") 
                {
                    var bm:Bitmap = new Hotel as Bitmap;
                }
                else 
                {
                    var bm:Bitmap = new Hostel as Bitmap;
                }

                var html:String = "<b>" + testList[i].name + "</b><br/>" + testList[i].street + "<br/>" + testList[i].city + "<br/>" + testList[i].country + ", " + testList[i].postcode;



                var testMarker:Marker = new Marker(new LatLng(testList[i].latitude,testList[i].longitude),
                    new MarkerOptions({icon:bm, iconOffset: new Point (-23, -44)}));
                testMarker.addEventListener(MapMouseEvent.CLICK, function(e:MapMouseEvent):void {
                    Marker(e.currentTarget).openInfoWindow(new InfoWindowOptions({contentHTML:dict[e.currentTarget]}));
                });
                dict[testMarker] = html;

                Map.addOverlay(testMarker);
            }

        }

该代码有效,它只允许我根据纬度/经度显示所有标记,然后当我单击标记时,它会正确显示信息。在click函数中,我添加了testLabel.text = testList.name;并返回了所有XML标记,但我不知道如何访问特定的标记。我尝试了testLabel.text = testList[i].name;,但却发出错误Error #1010: A term is undefined and has no properties。我也试过testLabel.text = testList[e.currentTarget].name,我的标签上没有任何内容。

我只是不明白当我点击标记时它如何访问信息窗口的XML数据,而不是标签。我不完全理解dict,但如果它意味着它只能使用一次而我必须在信息窗口之间进行选择并将函数返回到标签,那么我需要它去标签。 我真的在这里挣扎,所以我很感激你的帮助。

1 个答案:

答案 0 :(得分:0)

我已经通过在文件var nameDict=new flash.utils.Dictionary();的开头声明一个新词典解决了我的问题,然后在我的标记点击处理程序中,我有以下行detailName.text = nameDict[e.currentTarget];然后在事件之外(但旁边打印标记的行是以下行nameDict[testMarker] = testList[i].name;