Google maps api 3 信息窗口错误定位

Google maps api 3 信息窗口错误定位,google-maps-api-3,google-maps-markers,Google Maps Api 3,Google Maps Markers,我对GoogleMapsAPI3还不太熟悉,无法找出以下错误:所有单击我的标记的操作都会在同一个标记上打开信息窗口(坏),但文本不同(好)。 我将wordpress自定义元数据中的数据提取到xml中,然后进行解析;让我感到奇怪的是,生成标记是这样工作的,但是为infowindow添加侦听器显然失败了 知道这里发生了什么吗 现场演示,网址: 代码 $(文档).ready(函数(){ var信息窗口; var latlng=新的google.maps.latlng(47.580231,13.771

我对GoogleMapsAPI3还不太熟悉,无法找出以下错误:所有单击我的标记的操作都会在同一个标记上打开信息窗口(坏),但文本不同(好)。 我将wordpress自定义元数据中的数据提取到xml中,然后进行解析;让我感到奇怪的是,生成标记是这样工作的,但是为infowindow添加侦听器显然失败了

知道这里发生了什么吗

现场演示,网址:

代码

$(文档).ready(函数(){
var信息窗口;
var latlng=新的google.maps.latlng(47.580231,13.771362);
变量设置={
缩放:8,
中心:拉特林,
泛控制:对,
动物控制:对,
mapTypeControl:true,
disableDefaultUI:true,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById(“map_canvas”),设置);
jQuery.get(“http://rundumadum.eu/de/wp-content/themes/rud/rundumadumMap.xml“,{},函数(数据){
var xmlength=$(数据).find(“mymarkers”).children().size();
var超级市场=[];
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=“”;
var marker=createMyMarker(mytitle、myinfo、mylink、mylatng);
});
});
函数createMyMarker(mytitle、myinfo、mylink、MyAtlng){
marker=新的google.maps.marker({
职位:mylatlng,
地图:地图,
可点击:正确,
图标:'http://rundumadum.eu/de/wp-content/themes/rud/static/img/markerTest.png',
html:'
});
google.maps.event.addListener(标记“单击”,函数(){
if(infowindow)infowindow.close();
infowindow=newgoogle.maps.infowindow({content:myinfo});
信息窗口。打开(地图、标记);
});
}
返回标记;
});

如果您有任何想法,我将不胜感激。

我注意到的一件事是,您在
createMyMarker
中创建的
标记
未使用
var marker
声明,因此看起来您无意中创建了一个全局
标记
引用。另外,语句:
returnmarker
实际上位于
createMyMarker
函数的末尾,尽管这可能只是在您设置问题中的代码示例时引入的输入错误


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

感谢您的输入。我添加了var,但没有任何变化。这让我想到这一行:if(infowindow)infowindow.close();猜猜看,这就是问题所在;-)应该是这样的:if(infowindow){infowindow.close();}非常感谢!伟大的很多时候,只需浏览你的问题并向其他人解释一下,就能帮助你看到类似的东西,然后你就能解决问题。很高兴我能帮忙,甚至是间接地。
$(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;

});