我试图在单击标记时弹出一个信息窗口。然而,信息窗口 仅当标记位于与创建谷歌地图的位置相同的位置时才会显示。任何其他标记位置和信息窗口都不会弹出。这似乎是一个非常奇怪的问题。控制台上没有错误。
例如在代码中,如果我将标记的位置设置为传递的纬度和经度,用于制作谷歌地图。没事。但是如果我稍微改变位置 (position_val
),就像我对 lat +1
所做的那样,信息窗口不会显示。但是,当我单击信息窗口时,它会将 map 居中放置在信息窗口应显示的位置。监听器确实有效,因为我尝试在单击标记时输出 console.log() 。为什么我不能让标记有不同的位置?为了简单起见,我结合了 map 创建和标记创建。
编辑:jsfiddle 链接:http://jsfiddle.net/G3b8M/2/
var map;
var infowindow = new google.maps.InfoWindow({});
function makeMap(lat, long) {
var myOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP,
position: new google.maps.LatLng(lat, long),
zoom: 14,
};
map = new google.maps.Map( document.getElementById("map_canvas"), myOptions);
map.setCenter( myOptions.position);
//position_val = new google.maps.LatLng(lat, long); infowindow works
position_val = new google.maps.LatLng(lat + 1, long); //infowindow doesn't work
var marker = new google.maps.Marker({
position: position_val ,
map: map,
});
map.setCenter(position_val);
var contentString = 'hello how are you';
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(contentString);
infowindow.open(map, marker);
});
}
如有任何帮助,我们将不胜感激。谢谢。
最佳答案
我不能确切地告诉你它为什么会发生,通常它不应该,但是 position
的纯粹存在 - map 属性(无论值是什么)似乎是问题。
演示:
注意:我对您的代码做了一些修改,以减少其他可能的原因。例如你不应该使用 long
作为标识符,因为它是一个 reserved word .
但是,奇怪的是,它与原始代码中的另一行一起工作对我来说毫无意义。
您可以 report a bug为此。
关于javascript - Google Map Marker InfoWindow 不显示起始 map 位置以外的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23110710/