Маркер XML-данных с downloadUrl в Google maps v3 - PullRequest
1 голос
/ 31 июля 2011

Я пытаюсь загрузить маркеры из 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 Ответ

2 голосов
/ 31 июля 2011

Вам необходимо определить функцию 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); 
}

В самом вызове вам нужно получить XML от data:

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