【问题标题】:Adobe Flex: Accessing Particular Field From XMLListAdobe Flex:从 XMLList 访问特定字段
【发布时间】:2012-05-29 01:19:37
【问题描述】:

我目前有从我的数据库返回并存储在 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 数据,而不是标签。我不完全理解字典,但如果它意味着它只能使用一次并且我必须在信息窗口和将函数返回到标签之间进行选择,那么我需要它去标签。 我在这里真的很挣扎,所以我很感激任何帮助。

【问题讨论】:

  • 嗯,没有 XML 文件,但是 PHP 在 XML 从数据库返回时写入它。它看起来像这样: user> 我不会全部输入,但你明白了。

标签: xml apache-flex google-maps


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2015-07-18
    • 2014-03-17
    • 2011-08-01
    • 2021-10-15
    相关资源
    最近更新 更多