0

我对 Google Maps API 3 很陌生,无法弄清楚以下错误:我的标记上的所有点击都会在同一个标​​记上打开信息窗口(坏),但文本不同(好)。我将数据从wordpress自定义元数据中提取到一个xml中,然后我对其进行解析;让我想知道的是,以这种方式生成标记是这样的,但是为信息窗口添加侦听器显然失败了。

有什么想法吗?

现场演示:http: //goo.gl/9seK9

代码

$(document).ready(function(){

    var infowindow;
    var latlng = new google.maps.LatLng(47.580231,13.771362);
    var settings = {
        zoom: 8,
        center: latlng,
        panControl: true,
        zoomControl: true,
        mapTypeControl: true,
        disableDefaultUI:true,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), settings);


    jQuery.get("http://rundumadum.eu/de/wp-content/themes/rud/rundumadumMap.xml", {}, function(data) {
        var xmllength = $(data).find("mymarkers").children().size();
        var supermarkers = [];

        jQuery(data).find("mymarker").each(function() {
                var myid = $(this).find("id").text();
                var mytitle = $(this).find("title").text();
                var mylink = $(this).find("link").text();
                var mylocation = $(this).find("location").text();

                var mysplits = mylocation.split(",");
                var mylat = mysplits[0];
                var mylng = mysplits[1];
                var mylatlng = new google.maps.LatLng(parseFloat(mylat), parseFloat(mylng));  
                var myinfo = "<a href="+mylink+">"+mytitle+"</a>";
                var marker = createMyMarker(mytitle, myinfo, mylink, mylatlng);
        });
    });


    function createMyMarker(mytitle, myinfo, mylink, mylatlng) {
        marker = new google.maps.Marker({
            position: mylatlng, 
            map: map,
            clickable:true,
            icon:'http://rundumadum.eu/de/wp-content/themes/rud/static/img/markerTest.png',
            html: '<a href="'+mylink+'">'+mytitle+'</a>'
        });

        google.maps.event.addListener(marker, "click", function() {
            if (infowindow) infowindow.close();
            infowindow = new google.maps.InfoWindow({content: myinfo});
            infowindow.open(map, marker);
        });
    }
    return marker;

});

将不胜感激任何想法...

4

1 回答 1

0

我注意到的一件事是,marker您创建的createMyMarker不是 using 声明var marker,因此看起来您无意中创建了一个全局marker引用。此外,似乎声明:return marker实际上是在您的createMyMarker函数结束之后,尽管这可能只是您在问题中设置代码示例时引入的错字。

无论如何,我相信如果您更改代码createMyMarker以在该函数中使用声明标记var marker,它将为您提供更好的结果。

于 2012-07-11T13:07:43.293 回答