2012-05-15 84 views
2

我想这个代码谷歌地图API V3事件

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

它看起来像你有一个问题,你已经定义你的地图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... 
} 

另外,如果你想要在事件监听器中创建的标记显示,您还必须通过MarkerOptionsmap属性。它看起来像你可能不希望标记显示,所以我已经离开了 -

+0

当然,很高兴提供帮助,但我正在查看示例链接中的代码,并且它包含var name case问题。试图帮助:)无论如何,我认为真正的根本原因是地图'click'事件侦听器正在被定义的地方。 –

+0

你说得对。它现在有效。谢谢。 – mcmonty

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

+0

谢谢,@邓肯。这只是一个错误的职位..代码是正确的(或至少正确大写)。 – mcmonty