如何使用函数参数在谷歌地图中找到确切的点击标记?

时间:2011-12-25 18:27:03

标签: javascript jquery google-maps xml-parsing closures

我的标记将始终显示点击它的最后信息。基本上我想显示每个点击标记的相应信息。这是我到目前为止:

$(function() {
    var map = new google.maps.Map(document.getElementById('map_canvas'), {
                zoom : 2,
                center: new google.maps.LatLng(43.65654, -79.90138),
                mapTypeControl: false, //will remove the top right corner Map type(Satellite/Map)
                //scaleControl: false,
                navigationControl: false,
                mapTypeId: google.maps.MapTypeId.ROADMAP
                });
            $.get('example.xml', function(xml) {
            $('marker',xml).each(function(i) {
                var $this = $(this),
                    the_marker = new google.maps.Marker({
                        title: $this.find('label').text(),
                        map: map,
                        clickable: true,
                        position: new google.maps.LatLng(
                            parseFloat($this.find('lat').text()),
                            parseFloat($this.find('lon').text())
                    )});
                        new google.maps.event.addListener(the_marker, 'click', function() {
                        getInfo();
                });
            }); 
        });
    function getInfo() {
            $.ajax({
                type:'GET',
                url:'example.xml',
                dataType:'xml',
                success: function(xml) {
                $(xml).each(function() {
                    $(this).find("marker").each(function() {
                        $(this).find("info"); 
                        $("#newDiv").html($(this).find("info"));
                    })
                })
                }

            })
        $("#newDiv").html($(this).find("info").text());
    }
    });

就像我总是在点击我的标记时得到最后一个信息,但我希望每个标记都有自己的信息窗口打开。现在我的示例中没有infowindow,我有div。

由于

1 个答案:

答案 0 :(得分:0)

你可以简单地使用数组来做到这一点 等,

markers[i] = new Marker({ some options });
new google.maps.event.addListener(markers[i], 'click', function() {
    getInfo(i);
});

加入:

仍然无法理解为什么你想在点击任何标记时只获得xml中的第一个标记 任何演示或示例?
如果你想获取点击标记的信息,就这样做。

markers[i] = new Marker({ some options });
info[i] = $(this).find('info');
new google.maps.event.addListener(markers[i], 'click', function() { 
    $("#newDiv").html(info[i]);
});