0

我需要从 xml 创建 Javascript 数组 ..

我使用 ajax 从 poly php 获取 xml 数据。一切都好。

我必须像这样创建数组:

  point = [
                 new google.maps.LatLng(40.9921196514,47.8604733650 ),
                 new google.maps.LatLng(40.9922511293,47.8606186245 ),

        ];

代码

 downloadUrl("poly.php", function(data) {
        var xml = data.responseXML;
        var polys = xml.documentElement.getElementsByTagName("poly");
        for (var i = 0; i < polys.length; i++) {

             var pid  = polys[i].getAttribute("pid");


   point = [
          new google.maps.LatLng(parseFloat(polys[i].getAttribute("plat")), parseFloat(polys[i].getAttribute("plng")) );
        ];

我已经这样做了,但它不起作用..((

PS 我从 MySQL 获取数据。

...

xml:

    <polys>
<poly pid="1" pstatus="status1" plat="40.992638" plng="47.860474"/>
<poly pid="2" pstatus="status2" plat="40.992252" plng="47.860619"/>
</polys>
4

1 回答 1

1

我可以假设您使用downloadUrlgoogles util.js中的功能吗?

是时:data已经是文档,不需要访问data.responseXML

每次尝试访问 的属性xml都会导致错误,xml因为undefined

替换这个:

    var xml = data.responseXML;
    var polys = xml.documentElement.getElementsByTagName("poly");

和:

    var polys = data.documentElement.getElementsByTagName("poly");

有一个语法错误:

point = [
          new google.maps.LatLng(parseFloat(polys[i].getAttribute("plat")), parseFloat(polys[i].getAttribute("plng")) );
        ];

删除分号:

("plng")) );
//---------^

但是要获得所需的结果,您必须在循环外创建点数组:

var point=[];

并将 LatLng 添加到循环内:

point.push(new google.maps.LatLng(parseFloat(polys[i].getAttribute("plat")),  
                                  parseFloat(polys[i].getAttribute("plng"))));
于 2013-01-05T20:42:28.553 回答