-1

私の問題を読んでくれてありがとう。Google Map API を使用して XML を解析しています。XML データは MFC によって生成され、それを HTML に送信します。<input type="hidden" name="XMLData" id="XMLfromMFC" value="" />.

次に、JavaScript を使用してこの XML 文字列を解析し、いくつかの作業を行いますが、XML 文字列を解析するボタンをクリックすると、「getElementsByTagName からデータを取得できません: null または未定義です。

しかし、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

You are using the deprecated Google Maps API v2, which is not recommended for new development, and could stop working as early as May 2013. You should move to the v3 API (which doesn't include any of this functionality).

You should look at your javascript errors, I suspect that xmlDoc.documentElement is null.

于 2012-10-11T11:24:55.650 に答える