2

我想要这个代码

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

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

4

2 回答 2

0

Javascript 区分大小写。infoWindow 和 infowindow 指的是两个不同的东西。

infoWindow.setContent(outsideContent);
infowindow.open(map, marker);

不确定这实际上是您的问题(我希望仍然会看到一个空白的信息窗口)。当然,您不需要标记来打开信息窗口,例如查看我的这篇博客文章,展示如何将信息窗口添加到地图以响应用户点击

从理论上讲,这应该对您有用:

<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 层。

于 2012-05-15T13:48:45.823 回答
0

看起来您定义地图click侦听器的位置有问题,它位于generateInfoWindow函数内部,似乎只能从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...
}

此外,如果您希望显示在事件侦听器中创建的标记,您还必须传递 的map属性MarkerOptions。看起来您可能不希望显示标记,所以我把它省略了 -

于 2012-05-15T14:33:55.447 回答