我想要这段代码
google.maps.event.addListener(map, 'click', function(event) {
var marker = new google.maps.Marker({
position: event.latLng
});
var outsideContent = "my content";
infowindow.setContent(outsideContent);
infowindow.open(map, marker);
});
如果单击地图而不存在叠加/多边形,则打开信息窗口。但是,代码没有执行。
答案 0 :(得分:0)
Javascript区分大小写。 infoWindow和infowindow指的是两个不同的东西。
infoWindow.setContent(outsideContent);
infowindow.open(map, marker);
不确定这实际上是你的问题(我希望仍然会看到一个空白的infowindow)。当然,您不需要打开标记来打开信息窗口,例如查看我的博文显示how to add an infowindow to a map in response to user clicks。
理论上这应该对你有用:
<script type="text/javascript">
function initialize() {
var myOptions = {
zoom: 10,
center: new google.maps.LatLng(50.820645,-0.137376),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var infowindow = new google.maps.InfoWindow({
content: 'my content'
});
google.maps.event.addListener(map, 'click', function(event) {
infowindow.setPosition(event.latLng);
infowindow.open(map);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
问题可能源于你拥有的任何其他事件监听器,也可能是你正在进行的KML层。
答案 1 :(得分:0)
看起来您在定义地图click
侦听器的位置存在问题,它位于generateInfoWindow
函数内部,该函数似乎只能从{{1}调用功能。
如果您在zoomtoaddress
函数中将该侦听器设置移到您创建地图的旁边,我认为您应该善于在单击地图时打开intialize
:
InfoWindow
此外,如果您希望显示要在事件侦听器中创建的标记,则还必须传递function initialize() {
// ...
map = new google.maps.Map(document.getElementById('map_canvas'), options);
// Move your event listener definition right here:
google.maps.event.addListener(map, 'click', function(event) {
var marker = new google.maps.Marker({ position: event.latLng });
var outsideContent = "outside content replaced for brevity";
infowindow.setContent(outsideContent); //include var name correction
infowindow.open(map, marker);
});
//the rest of initialize...
}
的{{1}}属性。看起来你可能不想显示标记,所以我把它留了出来 -