使用Google地图v3中的downloadUrl标记XML数据

时间:2011-07-31 08:26:21

标签: javascript xml google-maps google-maps-markers

我正在尝试从XML加载标记,但我的代码中存在问题。我已尝试使用警报进行调试,但我无法找到问题所在。 Test2未显示。

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js sensor=false"></script>
//<script type="text/javascript" src="util.js"></script>
<script type="text/javascript">

  function initialize() {
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    alert("test1");

    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var marker = new google.maps.Marker({position: latlng, map: map});

    downloadUrl("data.xml", function(data) {
      alert("test2");
      var markers = data.documentElement.getElementsByTagName("marker");
      alert("test3");
      for (var i = 0; i < markers.length; i++) {
        var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));
        var marker = new google.maps.Marker({position: latlng, map: map});
      }
    });

    alert("test4");
  }

</script>

1 个答案:

答案 0 :(得分:2)

您需要定义在程序中调用的函数downloadUrl()。最简单的版本是:

function downloadUrl(url, callback) {  
    var request = window.ActiveXObject ? 
        new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest;   
    request.onreadystatechange = function() {    
        if (request.readyState == 4) {            
            callback(request);    
        } 
    };   
    request.open('GET', url, true);  
    request.send(null); 
}

在调用本身中,您需要从data获取XML:

downloadUrl("data.xml", function(data) {
    alert("test2");
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    // ...
}