1

我正在学习 javascript,但速度不是很快,我正在尝试使用代码创建一个谷歌地图 v3 api,其中包含从 xml 文件加载的可搜索位置。

遇到了一个问题,事实上很多,但这是一个:我无法访问 xml 文件中的数据,我使用了一个示例并尝试通过阅读和尝试不同的代码来调整它,但没有成功。

它没有使用我的 xml 文件访问数据,这是我的 xml 格式,带有以下 js 代码:

    <markers style="MEDIUM">
       <marker>
         <title>McDonalds</title>
         <lat>55.5452</lat>
         <lng>34.3755</lng>
         <markerId>0</markerId>
         <countryCode>GB</countryCode>
         <address>Somewhere in London</address>
         <description>Get a free toy with every happy meal!</description>
       </marker>
    </markers>

这是我的 html 文件中的 JS。

downloadUrl("london.xml", function(doc) {
            var xmlDoc = xmlParse(doc);
            var markers = xmlDoc.documentElement.getElementsByTagName("marker");

            for (var i = 0; i < markers.length; i++) {
             // obtain the attribues of each marker
              var lat = parseFloat(markers[i].getElementsByTagName("lat"));
              var lng = parseFloat(markers[i].getElementsByTagName("lng"));
              var point = new google.maps.LatLng(lat,lng);

              var description = markers[i].getElementsByTagName("description");
              var title = markers[i].getElementsByTagName("title");
          alert(title);
              // create the marker
              var marker = createMarker(point,title,description);
            }
        alert(i);

我想这是非常简单的事情,例如链接节点,但我无法弄清楚,并认为一些帮助或建议可以帮助我节省一些理智,谢谢大家。

4

1 回答 1

1

好吧,很难确定所有问题出在哪里......但是,我可以看到的第一个问题是您正在尝试从中getElementsByTagName获取,documentElement但您需要从中获取xmlDoc

var markers = xmlDoc.getElementsByTagName("marker");

然后,您尝试将NodeListobject 转换为float. 它应该重做:

var lat = parseFloat(markers[i].getElementsByTagName("lat")[0].textContent);
var lng = parseFloat(markers[i].getElementsByTagName("lng")[0].textContent);

接下来,我相信descriptiontitle存储在textContent具有相应名称的第一个节点中。所以,

var description = markers[i].getElementsByTagName("description")[0].textContent;
var title = markers[i].getElementsByTagName("title")[0].textContent;

并且不要忘记检查您的 XML 文件的正确格式(包括<?xml ...?>标题等)

于 2012-04-28T00:42:22.377 回答