如何使用jQuery隐藏Google Maps Api Markers

您好,这可能是一个非常愚蠢的问题,但我想在点击它们时使标记消失。 标记位于地图上,但是当我点击它时,它没有做任何事情。 我想知道它为什么不起作用。 谢谢!

  $(document).ready(function(){ var myOptions = { center: new google.maps.LatLng(40.1, -88.2), zoom: 13, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); var myLatlng = new google.maps.LatLng(40.1, -88.2); var temp_marker = new google.maps.Marker({ position: myLatlng, map: map, title:"Hello World!" }); console.log($(temp_marker)); console.log(temp_marker); //temp_marker.click(function(){$(this).hide();}); $(temp_marker).click(function(){console.log("click is working"); $(this).hide();}); });    

temp_marker是一个Javascript对象,而不是DOM元素。 要将侦听器附加到标记(API将处理要附加到哪个DOM元素的细节以及如何处理),您应该使用Google Maps API自己的事件系统,如:

  google.maps.event.addListener(marker, 'click', function() { marker.setVisible(false); // maps API hide call }); 

他们的文档: Google Maps Javascript API v3 – Events

Ben为你提供了一半的答案。 一旦您能够检测到标记点击事件,您需要“隐藏”或从地图中删除标记。 使用谷歌地图执行此操作的标准方法是:

 this.setMap(null); 

然后,您可以再次使用setMap显示地图,以指定地图对象而不是null。

扩展Ben的笔记,这应该是你宣布你的标记的地方 – 例如:

 var beachMarker = new google.maps.Marker({ position: myLatLng, map: map, icon: image }); google.maps.event.addListener(beachMarker, 'click', function() { beachMarker.setVisible(false); // maps API hide call }); } 

我花了很多时间试图解决这个问题。 Ben的巨额功劳! 谢谢!

marker是一个谷歌地图对象,而不是DOM元素。 Jquery适用于DOM元素。

我不确定你是否可以隐藏标记,但是当你声明marker时,click事件的相应钩子会做这样的事情。

 google.maps.event.addListener(marker, 'click', function() { // do your hide here }); 

您可能必须从地图中删除标记而不是“隐藏”它。

你想要隐藏标记是为了什么? 你必须能够重新标记标记吗? 你打算怎么做到这一点?

您可以通过将可见性设置为true来显示标记,并通过将可见性设置为false隐藏它

 marker.setVisible(false); // hide the marker