2014-12-03 66 views
0

我学习到从谷歌地图上的XML文件和地点访问数据,但不断收到错误:“类型错误:XML是未定义 http://gm.boomeranginternet.co.uk/Default3.aspx 138线”谷歌地图,Ajax的XML数据

任何人都可以看到为什么这个错误正在发生?

All code is on this example

var map; 

    var Data = [];       // this array stores all data   
    var viewportMarkersKS2 = []; 
    var viewportMarkersP16 = []; 
    var viewportMarkersHealthcare = []; 
    var KS2MarkersVisible = document.getElementById('Checkbox1'); 
    var P16MarkersVisible = document.getElementById('Checkbox2'); 
    var HealthcareMarkersVisible = document.getElementById('Checkbox3'); 
    var infoWindow; 
    var handle1, handle2; 
    var iconBlue = 'icons/blue-dot.png'; 
    var iconGreen = 'icons/green-dot.png'; 
    var iconPink = 'icons/pink-dot.png'; 
    //var zoomLevel = map.getZoom(); 

    // property and map center 
    var iniLat = 51.401997; 
    var iniLon = -1.276934; 
    var iniZoom = 15; 
    var ResetZoom = 13; 
    var maxZoom = 12; 
    var propertyLatLng = new google.maps.LatLng(iniLat, iniLon); 

    function initialize() { 

     // change map size dependent on useragent 
     detectBrowser() 

     // map options 
     var mapOptions = { 
      center: propertyLatLng, 
      zoom: iniZoom 
     }; 

     map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 




     //******************************************************************************************************************** 
     //******************************************************************************************************************** 
     //**********************************************       ********************************************* 
     //********************************************** SELECTED PROPERTY ********************************************* 
     //**********************************************       ********************************************* 
     //******************************************************************************************************************** 
     //******************************************************************************************************************** 

     // add the property to the map 
     var propertyIcon = new google.maps.Marker({ 
      position: propertyLatLng 
     }); 




     // infoWindows 
     var infoWindowContent = '11 Derwent Road<br />Thatcham<br />Berkshire<br />RG19 3UT'; 

     var infowindow = new google.maps.InfoWindow({ 
      content: infoWindowContent 
     }); 

     google.maps.event.addListener(propertyIcon, 'click', function() { 
      infowindow.open(map, propertyIcon); 
     }); 


     // add markers to the map 
     propertyIcon.setMap(map); 





     // when user drags the map or zooms in/out, update list of airports in range 
     google.maps.event.addListenerOnce(map, 'bounds_changed', function() { showGetResultXml() }); 
     google.maps.event.addListener(map, 'dragend', function() { showGetResultXml() }); 
     google.maps.event.addListener(map, 'zoom_changed', function() { showGetResultXml() }); 


    } 





    function showGetResultXml() { 
     var result = null; 
     var scriptUrl = "http://gm.boomeranginternet.co.uk/xml/amenitydata.xml"; 
     $.ajax(
     { 
      url: scriptUrl, 
      type: 'get', 
      dataType: 'xml', 
      async: false, 
      success: function(data) { 
       result = data; 
       var xml = data.responseXML; 
       var markers = xml.documentElement.getElementsByTagName("Row"); 

       for (var i = 0; i < markers.length; i++) { 
        var name = markers[i].getAttribute("SchoolName"); 
        var address = markers[i].getAttribute("Address1"); 
        var type = markers[i].getAttribute("type"); 
        var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("Coordinates"))); 

        var html = "<b>" + name + "</b> <br/>" + address; 
        var icon = customIcons[type] || {}; 

        var marker = new google.maps.Marker(
        { 
         map: map, 
         position: point, 
         icon: iconBlue 
        }); 

        bindInfoWindow(marker, map, infoWindow, html); 
       } 
      }, 
      error: function onXmlError() { 
       alert("An Error has occurred."); 
      } 
     }); 







     function bindInfoWindow(marker, map, infoWindow, html) { 
      google.maps.event.addListener(marker, 'click', function() { 
       infoWindow.setContent(html); 
       infoWindow.open(map, marker); 
      }); 
     } 

     return result; 
    } 



    function detectBrowser() { 
     var useragent = navigator.userAgent; 
     var mapdiv = document.getElementById("map-canvas"); 

     if (useragent.indexOf('iPhone') != -1 || useragent.indexOf('Android') != -1) { 
      mapdiv.style.width = '100%'; 
      mapdiv.style.height = '100%'; 
     } else { 
      mapdiv.style.width = '100%'; 
     } 
    } 





    google.maps.event.addDomListener(window, 'load', initialize); 

XML

<?xml version="1.0" encoding="utf-8" ?> 
<AmenityData> 
    <Row> 
    <LANumber>869</LANumber> 
    <EstablishmentNumber>4034</EstablishmentNumber> 
    <SchoolName>John O&amp;#39;Gaunt School</SchoolName> 
    <Address1>Priory Road</Address1> 
    <Town>Hungerford</Town> 
    <Postcode>RG17 0AN</Postcode> 
    <Coordinates>51.405190, -1.514791</Coordinates> 
    <lat>51.405190</lat> 
    <long>-1.514791</long> 
    <TelNumber>01488 682400</TelNumber> 
    <Type>CY</Type> 
    <Age>61</Age> 
    </Row> 
    <Row> 
    <LANumber>872</LANumber> 
    <EstablishmentNumber>4051</EstablishmentNumber> 
    <SchoolName>The Bulmershe School</SchoolName> 
    <Address1>Chequers Way</Address1> 
    <Address2>Woodley</Address2> 
    <Town>Reading</Town> 
    <Postcode>RG5 3EL</Postcode> 
    <Coordinates>51.454231, -0.917519</Coordinates> 
    <lat>51.454231</lat> 
    <long>-0.917519</long> 
    <TelNumber>0118 9353353</TelNumber> 
    <Type>CY</Type> 
    <Age>170</Age> 
    </Row> 
    <Row> 
    <LANumber>872</LANumber> 
    <EstablishmentNumber>4049</EstablishmentNumber> 
    <SchoolName>The Emmbrook School</SchoolName> 
    <Address1>Emmbrook Road</Address1> 
    <Town>Wokingham</Town> 
    <Postcode>RG41 1JP</Postcode> 
    <Coordinates>51.421683, -0.851670</Coordinates> 
    <lat>51.421683</lat> 
    <long>-0.851670</long> 
    <TelNumber>0118 9784406</TelNumber> 
    <Type>CY</Type> 
    <Age>219</Age> 
    </Row> 
    <Row> 
    <LANumber>870</LANumber> 
    <EstablishmentNumber>4020</EstablishmentNumber> 
    <SchoolName>Highdown School and Sixth Form Centre</SchoolName> 
    <Address1>Surley Row</Address1> 
    <Address2>Emmer Green</Address2> 
    <Town>Reading</Town> 
    <Postcode>RG4 8LR</Postcode> 
    <Coordinates>51.481701, -0.975611</Coordinates> 
    <lat>51.481701</lat> 
    <long>-0.975611</long> 
    <TelNumber>0118 9015800</TelNumber> 
    <Type>ACC</Type> 
    <Age>273</Age> 
    </Row> 
    <Row> 
    <LANumber>869</LANumber> 
    <EstablishmentNumber>7005</EstablishmentNumber> 
    <SchoolName>Mary Hare School</SchoolName> 
    <Address1>Arlington Manor</Address1> 
    <Address2>Snelsmore Common</Address2> 
    <Town>Newbury</Town> 
    <Postcode>RG14 3BQ</Postcode> 
    <Coordinates>51.437105, -1.329385</Coordinates> 
    <lat>51.437105</lat> 
    <long>-1.329385</long> 
    <TelNumber>01635 244200</TelNumber> 
    <Type>NMSS</Type> 
    <Age>70</Age> 
    </Row> 
    <Row> 
    <LANumber>872</LANumber> 
    <EstablishmentNumber>6001</EstablishmentNumber> 
    <SchoolName>Bearwood College</SchoolName> 
    <Address1>Bearwood</Address1> 
    <Town>Wokingham</Town> 
    <Postcode>RG41 5BG</Postcode> 
    <Coordinates>51.415843, -0.883741</Coordinates> 
    <lat>51.415843</lat> 
    <long>-0.883741</long> 
    <TelNumber>0118 9748300</TelNumber> 
    <Type>IND</Type> 
    <Age>77</Age> 
    </Row> 
    <Row> 
    <LANumber>867</LANumber> 
    <EstablishmentNumber>4061</EstablishmentNumber> 
    <SchoolName>Easthampstead Park Community School</SchoolName> 
    <Address1>Ringmead</Address1> 
    <Town>Bracknell</Town> 
    <Postcode>RG12 8FS</Postcode> 
    <Coordinates>51.398508, -0.782719</Coordinates> 
    <lat>51.398508</lat> 
    <long>-0.782719</long> 
    <TelNumber>01344 304567</TelNumber> 
    <Type>CY</Type> 
    <Age>125</Age> 
    </Row> 
</AmenityData> 

感谢您的帮助。

+0

请张贴在问题本身的(相关)的代码,而不仅仅是一个网页链接,将变更或消失时的问题得到解决(链接是有帮助的,但一旦你的问题得到解决,将不会有用)。请参阅[我如何问一个好问题?](http://stackoverflow.com/help/how-to-ask) – geocodezip 2014-12-03 16:36:31

+0

所有代码添加,谢谢。 – JBoom 2014-12-03 16:42:18

+0

您应该也可以发布XML的样本。 – geocodezip 2014-12-03 16:52:11

回答

1

貌似没有.responseXML属性data

更改此:

success: function(data) { 
      result = data; 
      var xml = data.responseXML; 
      var markers = xml.documentElement.getElementsByTagName("Row"); 

要:

success: function(data) { 
      var markers = data.documentElement.getElementsByTagName("Row"); 
+0

谢谢,这确实消除了这个错误,但是没有在地图上显示。我给控制台日志'markers [i] .getAttribute(“SchoolName”)写了一个值,但它返回null。所以似乎没有获得XML值。 – JBoom 2014-12-03 17:17:53

+0

''不是''的属性,它是''元素中的元素。 – geocodezip 2014-12-03 17:21:05

+0

啊,应该已经做了一些研究XML多一点....有了 - 标记[i] .getElementsByTagName(“SchoolName”)[0] .childNodes [0] .nodeValue – JBoom 2014-12-03 18:10:37