您好,这可能是一个非常愚蠢的问题,但我正试图让标记消失 他们被点击了。标记位于地图上,但是当我点击它时,它没有 做任何事情。我想知道它为什么不起作用。谢谢!
<script type="text/javascript" src="jQuery.js"></script>
<script type="text/javascript">
$(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();});
});
</script>
</head>
<body>
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>
答案 0 :(得分:57)
temp_marker
是一个Javascript对象,而不是DOM元素。要将侦听器附加到标记(API将处理要附加到哪个DOM元素的细节以及如何处理),您应该使用Google Maps API自己的事件系统,如:
google.maps.event.addListener(marker, 'click', function() {
marker.setVisible(false); // maps API hide call
});
答案 1 :(得分:4)
扩展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的巨额功劳!谢谢!
答案 2 :(得分:3)
Ben为你提供了一半的答案。一旦您能够检测到标记点击事件,您需要“隐藏”或从地图中删除标记。使用谷歌地图执行此操作的标准方法是:
this.setMap(null);
然后,您可以再次使用setMap显示地图,以指定地图对象而不是null。
答案 3 :(得分:1)
marker
是Google地图对象,而不是DOM元素。 Jquery适用于DOM元素。
答案 4 :(得分:0)
我不确定你是否可以隐藏标记,但是当你声明marker
google.maps.event.addListener(marker, 'click', function() {
// do your hide here
});
您可能必须从地图中删除标记而不是“隐藏”它。
你想要隐藏标记是为了什么?你必须能够重新标记标记吗?你打算如何做到这一点?
答案 5 :(得分:0)
您可以通过设置可见性true
来显示标记,并通过设置可见性false
来隐藏标记
marker.setVisible(false); // hide the marker