Javascript Google Maps API:未显示XML文件中的标记

Javascript Google Maps API:未显示XML文件中的标记,javascript,jsp,google-maps-api-3,Javascript,Jsp,Google Maps Api 3,使用这里发布的代码,我试图使用GoogleMapsJavaScriptAPIv3将标记从XML文件映射到JSP中的GoogleMap 我的标记文件具有以下格式: <markers> <marker> <id>0</id> <lat>53341428</lat> <lng>-6246720</lng> <name>Fen

使用这里发布的代码,我试图使用GoogleMapsJavaScriptAPIv3将标记从XML文件映射到JSP中的GoogleMap

我的标记文件具有以下格式:

<markers>
    <marker>
        <id>0</id>
        <lat>53341428</lat>
        <lng>-6246720</lng>
        <name>Fenian Street</name>
        <number>63</number>
    </marker>
    <marker>
        <id>1</id>
        <lat>53346637</lat>
        <lng>-6246154</lng>
        <name>City Quay</name>
        <number>99</number>
    </marker>

0
53341428
-6246720
费年街
63
1.
53346637
-6246154
城市码头
99
代码是:

<script type="text/javascript">

        function load() {
            var map = new google.maps.Map(document.getElementById("map"), {
                center: new google.maps.LatLng(53.3430347, -6.2550587),
                zoom: 14,
                mapTypeId: 'roadmap'`enter code here`
            });
            var infoWindow = new google.maps.InfoWindow;

            downloadUrl( "markers.xml", function(data) {
                var xml = data.responseXML;
                var markers = xml.documentElement.getElementsByTagName("marker");
                for (var i = 0; i < markers.length; i++) {
                    //var id = markers[i].getElement("id");
                    var id = markers[i].getElementsByTagName("id")[0];

                    var point = new google.maps.LatLng(
                            parseFloat(markers[i].getElementsByTagName("lat")[0]),
                            parseFloat(markers[i].getElementsByTagName("lng")[0]));
                    var name = markers[i].getElementsByTagName("name")[0];
                    //var number = markers[i].getElementsByTagName("number");

                    var html = "<b>" + id + "</b> <br/>" + name;

                    var image = 'img.png';

                    //var icon = customIcons[type] || {};
                    var marker = new google.maps.Marker({
                        position: point,
                        map: map,
                        title: name,
                        icon: image
                    });

                    marker.setMap(map);
                    bindInfoWindow(marker, map, infoWindow, html);
                }
            });
        }

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

        function downloadUrl(url, callback) {
            var request = window.ActiveXObject ?
                   new ActiveXObject('Microsoft.XMLHTTP') :
                   new XMLHttpRequest;

            request.onreadystatechange = function () {
                if (request.readyState === 4) {
                    request.onreadystatechange = doNothing;
                    callback(request, request.status);
                }
            };

            request.open('GET', url, true);
            request.send();
        }

        function doNothing() {
        }
</script>

函数加载(){
var map=new google.maps.map(document.getElementById(“map”){
中心:新google.maps.LatLng(53.3430347,-6.2550587),
缩放:14,
mapTypeId:“路线图”`在此处输入代码`
});
var infoWindow=new google.maps.infoWindow;
下载URL(“markers.xml”,函数(数据){
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i“+名称;
var image='img.png';
//var icon=customIcons[type]| |{};
var marker=new google.maps.marker({
位置:点,,
地图:地图,
标题:姓名,
图标:图像
});
marker.setMap(map);
bindInfoWindow(标记、地图、infoWindow、html);
}
});
}
函数bindInfoWindow(标记、地图、infoWindow、html){
google.maps.event.addListener(标记,'click',函数(){
setContent(html);
信息窗口。打开(地图、标记);
});
}
函数下载url(url,回调){
var请求=window.ActiveXObject?
新的ActiveXObject('Microsoft.XMLHTTP'):
新的XMLHttpRequest;
request.onreadystatechange=函数(){
if(request.readyState==4){
request.onreadystatechange=doNothing;
回调(请求、请求、状态);
}
};
打开('GET',url,true);
request.send();
}
函数doNothing(){
}
加载页面时,我在控制台中看到一个错误:InvalidValueError:setTitle:不是字符串


我做错了什么?标记没有出现在地图上。

您会遇到该错误,因为“name”不是字符串,而是XML DOM对象。有一个函数
nodeValue
,可用于从XML DOM元素中获取字符串内容

此外,您的纬度和经度无效,它们不是十进制度数

function load() {
    var map = new google.maps.Map(document.getElementById("map"), {
        center: new google.maps.LatLng(53.3430347, -6.2550587),
        zoom: 14,
        mapTypeId: 'roadmap'
    });
    var infoWindow = new google.maps.InfoWindow;

    // downloadUrl( "markers.xml", function(data) {
    // var xml = data.responseXML;
    var xml = xmlParse(xmlString);
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
        //var id = markers[i].getElement("id");
        var id = nodeValue(markers[i].getElementsByTagName("id")[0]);

        var point = new google.maps.LatLng(
        parseFloat(nodeValue(markers[i].getElementsByTagName("lat")[0])),
        parseFloat(nodeValue(markers[i].getElementsByTagName("lng")[0])));
        var name = nodeValue(markers[i].getElementsByTagName("name")[0]);
        //var number = markers[i].getElementsByTagName("number");

        var html = "<b>" + id + "</b> <br/>" + name;

        var image = 'img.png';

        //var icon = customIcons[type] || {};
        var marker = new google.maps.Marker({
            position: point,
            map: map,
            title: ""+name /*,
            icon: image */
        });

        marker.setMap(map);
        bindInfoWindow(marker, map, infoWindow, html);
    }
// });
}

//nodeValue: Extract the text value of a DOM node, with leading and trailing whitespace trimmed
function nodeValue (node, defVal) {
  var retStr="";
  if (!node) {
    return (typeof defVal === 'undefined' || defVal === null) ? '' : defVal;
  }
   if(node.nodeType==3||node.nodeType==4||node.nodeType==2){
      retStr+=node.nodeValue;
   }else if(node.nodeType==1||node.nodeType==9||node.nodeType==11){
      for(var i=0;i<node.childNodes.length;++i){
         retStr+=arguments.callee(node.childNodes[i]);
      }
   }
   return retStr;
};