0

我目前有从我的数据库返回并存储在 XMLList 中的数据。在数据库的结果处理程序中,有一个循环将标记放在谷歌地图上,并根据类型使用自定义图标。当我单击标记时,它会打开一个信息窗口并显示包含来自 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 数据,而不是标签。我不完全理解字典,但如果它意味着它只能使用一次并且我必须在信息窗口和将函数返回到标签之间进行选择,那么我需要它去标签。我在这里真的很挣扎,所以我很感激任何帮助。

4

1 回答 1

0

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

于 2012-05-29T23:27:14.093 回答