我是Google Maps API3的新手,不知道下面的错误:在我的标记上的所有点击都会在同一标记上打开信息窗口(不好),但有不同的文本(好的)。我将数据从wordpress自定义元数据中提取出来,并将其转换为xml,然后对其进行解析;让我感到疑惑的是,以这种方式生成标记是可行的,但是为infowindow添加侦听器显然失败了。
你知道这里发生了什么吗?
现场演示: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;
});如果你有任何想法..。
发布于 2012-07-11 21:07:43
我注意到的一件事是,您在createMyMarker中创建的marker不是使用var marker声明的,因此看起来您无意中创建了一个全局marker引用。此外,看起来语句:return marker实际上位于createMyMarker函数的末尾,尽管这可能只是您在问题中设置代码示例时引入的一个拼写错误。
无论如何,我相信如果您更改createMyMarker中的代码,以便在该函数中使用var marker声明标记,它会给您带来更好的结果。
https://stackoverflow.com/questions/11428374
复制相似问题