当我点击标记时,我试图让信息窗口弹出。但是,infowindow 仅在标记位于等于创建Google地图的位置的位置时显示。任何其他标记位置和infowindow都不会弹出。这似乎是一个非常奇怪的问题。控制台上没有错误。
例如在代码中,如果我将标记的位置设置为传递的lat和long,则用于制作google地图。没事。但是,如果我改变位置(position_val
),就像我对lat +1
一样,那么infowindow就不会出现了。但是当我点击infowindow时,它确实将地图居中到了infowindow应该出现的位置。听众确实有效,因为我在点击标记时尝试输出console.log()。为什么我不能让标记有不同的位置?为简单起见,我将地图创建和标记创建结合起来。
编辑: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);
});
}
任何帮助将不胜感激。感谢。
答案 0 :(得分:2)
我无法告诉你它究竟发生的原因,通常不应该这样,但地图的position
属性的纯粹存在(无论价值是多少)似乎是问题。
<强>演示&#39; S:强>
position
:http://jsfiddle.net/doktormolle/wqgLR/ position
:http://jsfiddle.net/doktormolle/wqgLR/1/ 注意:我已经修改了一些代码以减少其他可能的原因。例如您不应该使用long
作为标识符,因为它是reserved word。
然而,对我来说,它与原始代码中的另一行一起使用是没有意义的,很奇怪。
你可以report a bug为此。