XML到JavaScript数组[Google地图] [英] XML to JavaScript Array [Google Maps]

查看:178
本文介绍了XML到JavaScript数组[Google地图]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从xml创建Javascript数组。



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



我必须创建这样的数组:

pre $ 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(poly [i] .getAttribute(plat)),parseFloat(polys [i] .getAttribute(plng)));
(b);

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



我从MySQL获得数据。



...



xml:

 < polys> 
< poly pid =2pstatus =status2plat =40.992252plng =47.860619/>
< / polys>


解决方案

我可以假设你使用f unction downloadUrl from googles 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 = [
新的google.maps.LatLng(parseFloat(polys [i] .getAttribute(plat)),parseFloat(polys [i] .getAttribute(plng)));
];

删除分号:

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

但是为了得到所需的结果你必须在循环外部创建点数组:

  var point = []; 

并添加LatLng指向循环:

  point.push(新的google.maps.LatLng(parseFloat(polys [i] .getAttribute(plat)),
parseFloat(polys [i]。的getAttribute( PLNG))));


I need create Javascript array from xml ..

I`v get xml data from poly php with ajax. Everything is ok.

I must create array like that:

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

        ];

Code

 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")) );
        ];

i`ve do that but it does not work.. ((

P.S. I get data from 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>

解决方案

May I assume you use the function downloadUrl from googles util.js ?

When yes: data is already a document, there is no need to access data.responseXML

Each attempt to access a property of xml will result in an error, because xml is undefined

Replace this:

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

with:

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


There is an syntax-error:

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

remove the semicolon:

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

But to get the desired result you must create the point-array outside the loop:

var point=[];

and add the LatLng's to point inside the loop:

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

这篇关于XML到JavaScript数组[Google地图]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆