【发布时间】:2014-04-16 13:20:17
【问题描述】:
我试图在单击标记时弹出一个信息窗口。但是,信息窗口 仅当标记位于与创建谷歌地图的位置相同的位置时才会显示。任何其他标记位置和信息窗口都不会弹出。这似乎是一个非常奇怪的问题。控制台上没有错误。
例如在代码中,如果我将标记的位置设置为传递的经纬度,用于制作谷歌地图。没事。但是,如果我稍微改变位置 (position_val),就像我对 lat +1 所做的那样,信息窗口不会出现。但是当我单击信息窗口时,它确实将地图居中到信息窗口应该显示的位置。侦听器确实有效,因为我尝试在单击标记时输出 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);
});
}
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
这确实很奇怪,我会假设 infowindow 定位在尝试使用 lat + 1 部分时中断或放错了位置...您是否尝试过 LatLng((lat + 1), long)还是什么?
-
感谢您的建议,但没有奏效。我也尝试过硬编码值。
-
您能否向我们展示您调用
makeMap的代码,包括您使用的纬度/经度值示例? -
如果你这样做会发生什么
lat += 1; position_val = new google.maps.LatLng(lat, long); -
还是同样的问题。我将它添加到 jsFiddle。 jsfiddle.net/G3b8M/1如果你换掉位置值,你可以看到它在第 21 行和第 22 行工作而不工作
标签: javascript google-maps google-maps-api-3 infowindow