Javascript 从Google地图上的XML链接多个标记

Javascript 从Google地图上的XML链接多个标记,javascript,google-maps,xml-parsing,Javascript,Google Maps,Xml Parsing,我可以从XML文件中提取标记并将它们放在Google地图上,但现在我希望每个标记单击后都链接到各自的url。有人能告诉我我做错了什么吗?出于某种原因,我只得到最后一个条目的url downLoad("phpsqlajax.php", function(data) { var xml = data.responseXML; var markers = xml.documentElement.getElementsByTagName("marker"); for (var i

我可以从XML文件中提取标记并将它们放在Google地图上,但现在我希望每个标记单击后都链接到各自的url。有人能告诉我我做错了什么吗?出于某种原因,我只得到最后一个条目的url

downLoad("phpsqlajax.php", function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
        var city = markers[i].getAttribute("city");
        var state = markers[i].getAttribute("state");
        var country = markers[i].getAttribute("country");
        var markerUrl = markers[i].getAttribute("url");
        var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
        var marker = new google.maps.Marker({
            position: point,
            map: googleMap,
            icon: 'map-pin.png',
            url: markerUrl
        });
        google.maps.event.addListener(marker, 'click', function() {
            window.location.href = marker.url;
        });
    }
});
下载(“phpsqlajax.php”,函数(数据){ var xml=data.responseXML; var markers=xml.documentElement.getElementsByTagName(“标记”); 对于(var i=0;i创建如下创建标记函数(未测试):

那么就这样称呼它:

downLoad("phpsqlajax.php", function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
        var city = markers[i].getAttribute("city");
        var state = markers[i].getAttribute("state");
        var country = markers[i].getAttribute("country");
        var markerUrl = markers[i].getAttribute("url");
        var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
        createMarker(point, markerUrl);
    }
});
下载(“phpsqlajax.php”,函数(数据){ var xml=data.responseXML; var markers=xml.documentElement.getElementsByTagName(“标记”); 对于(var i=0;i我不知道我对函数闭包的理解是否足以使这个函数正确工作。请参阅我关于如何使用createMarker函数的答案。谢谢,这非常有用!你能向我解释一下为什么这样做有效吗?
downLoad("phpsqlajax.php", function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
        var city = markers[i].getAttribute("city");
        var state = markers[i].getAttribute("state");
        var country = markers[i].getAttribute("country");
        var markerUrl = markers[i].getAttribute("url");
        var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
        createMarker(point, markerUrl);
    }
});