Bonjour, c’est peut-être une question idiote mais j’essaie de faire disparaître les marqueurs lorsque Le marqueur est situé correctement sur la carte, mais lorsque je clique dessus, il ne fait rien. Je me demandais pourquoi ça ne marche pas. Je vous remercie!
<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>
temp_marker
est un objet Javascript, pas un élément DOM. Pour attacher un écouteur au marqueur (l'API gère les spécificités de l'élément DOM à associer et comment), vous devez utiliser le système d'événements de l'API Google Maps, comme suit:
google.maps.event.addListener(marker, 'click', function() {
marker.setVisible(false); // maps API hide call
});
Leur documentation: Google Maps Javascript API v3 - Evénements
En développant les notes de Ben, ceci devrait aller où vous avez déclaré votre marqueur - par exemple:
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
});
}
Il m'a fallu des siècles pour essayer de comprendre cela. Grand crédit à Ben! Merci!
Ben vous a fourni la moitié de la réponse. Une fois que vous êtes capable de détecter l'événement de clic du marqueur, vous devez "masquer" ou supprimer le marqueur de la carte. La méthode standard pour faire cela avec Google Maps est de faire ceci:
this.setMap(null);
Vous pouvez ensuite afficher à nouveau la carte en utilisant setMap pour affecter votre objet de carte au lieu de null.
marker
est un objet Google Maps, pas un élément DOM. Jquery fonctionne sur les éléments DOM.
Vous pouvez afficher un marqueur en définissant la visibilité true
et le masquer en définissant la visibilité false
marker.setVisible(false); // hide the marker
Je ne suis pas sûr que vous puissiez masquer simplement le marqueur, mais le crochet approprié pour l'événement click serait de faire quelque chose comme ceci lorsque vous déclarez marker
google.maps.event.addListener(marker, 'click', function() {
// do your hide here
});
Vous devrez peut-être supprimer le marqueur de la carte plutôt que de le "cacher".
Pourquoi essayez-vous de cacher les marqueurs? Devez-vous être capable de réafficher le marqueur? Comment comptez-vous accomplir cela?