【问题标题】:Google Maps, Ajax XML data谷歌地图,Ajax XML 数据
【发布时间】:2014-12-04 01:16:25
【问题描述】:

我正在学习从 XML 文件访问数据并放置在 Google 地图上,但不断收到错误消息:'TypeError: xml is undefined http://gm.boomeranginternet.co.uk/Default3.aspx 138'线

谁能看到为什么会发生这个错误?

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>

感谢您的帮助。

【问题讨论】:

  • 请在问题本身中发布(相关)代码,而不仅仅是指向在问题得到解决时会更改或消失的页面的链接(该链接很有帮助,但一旦有用就没有用了您的问题已解决)。见How do I ask a good question?
  • 所有代码已添加,谢谢。
  • 您可能还应该发布 XML 示例。

标签: ajax xml google-maps xmlhttprequest


【解决方案1】:

看起来data 没有.responseXML 属性。

改变这个:

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

收件人:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 2013-01-01
  • 2015-08-04
相关资源
最近更新 更多