-1

感谢您阅读我的问题。我使用 Google Map API 来解析 XML。XML 数据由 MFC 生成,然后我将其发送到 HTML,<input type="hidden" name="XMLData" id="XMLfromMFC" value="" />.

然后我使用 JavaScript 解析这个 XML 字符串并做一些工作,但是当我单击一个将解析 XML 字符串的按钮时,发生错误“无法从 getElementsByTagName 获取数据:它为空或未定义。

但是 JS 代码是Google Map API 的示例代码,所以我不知道如何解决这个问题。请帮我!

附加信息:我在 MFC 中使用 WebBrowser 加载所有代码的 HTML 页面。GXml 是 Google Map API 的命名空间,它具有该方法。我猜如果 MFC WebBrowser 不支持 getElementsByTagName() 方法?如果是这样,如何解决?

function loadXMLData()
{
    var strXML = document.getElementById('XMLfromMFC');
    var xmlDoc = GXml.parse(strXML);

    var polylines = xmlDoc.documentElement.getElementsByTagName("road");

    for (var i = 0; i < polylines.length; i++) {
         addPolylines(polylines[i]);
      }
}

function addPolylines(node)
{
   var points = node.getElementsByTagName("point");
   var pts = [];

   for (var i = 0; i < points.length; i++)
   {
   pts[i] = new      GLatLng(parseFloat(points[i].getAttribute("lat")),parseFloat(points[i].getAttribute("lon")));
   }
           for (var i = 0; i < points.length; i++) {
               pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")), parseFloat(points[i].getAttribute("lon")));
           }   

           var polyline = new GPolyline(pts);
           map.addOverlay(polyline);
           return polyline;
       }

XML 数据如下所示:

<?xml version="1.0" encoding="utf-8"?>
<AllRoadsData>
<road>
<id>1</id>
<roadName>first</roadName>
<roadWidth>2</roadWidth>
<pointsNum>9</pointsNum>
<maxSpeed>80</maxSpeed>
<point lon="42.361081" lat="-71.070213"/>
<point lon="42.361128" lat="-71.068625"/>
<point lon="42.361192" lat="-71.066844"/>
</road>
<road>
<id>2</id>
<roadName>second</roadName>
<roadWidth>4</roadWidth>
<pointsNum>5</pointsNum>
<maxSpeed>30</maxSpeed>
<point lon="42.357291" lat="-71.065063"/>
<point lon="42.358290" lat="-71.065085"/>
</road>
</AllRoadsData>
4

1 回答 1

0

您正在使用已弃用的 Google Maps API v2,不建议将其用于新开发,并且最早可能会在 2013 年 5 月停止工作。您应该迁移到 v3 API(不包含任何此功能)。

您应该查看您的 javascript 错误,我怀疑 xmlDoc.documentElement 为空。

于 2012-10-11T11:24:55.650 回答