Google Maps API V3活动

时间:2012-05-15 13:30:11

标签: javascript events google-maps-api-3

我想要这段代码

   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);
      });

如果单击地图而不存在叠加/多边形,则打开信息窗口。但是,代码没有执行。

2 个答案:

答案 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}}属性。看起来你可能不想显示标记,所以我把它留了出来 -