こんにちは、これは本当にばかげた質問かもしれませんが、マーカーをクリックしたときにマーカーが消えるようにしています。マーカーはマップ上に適切に配置されていますが、クリックしても何も実行されません。なぜ機能しないのかと思っていました。ありがとうございました!
<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
はJavascriptオブジェクトであり、DOM要素ではありません。リスナーをマーカーにアタッチするには(APIがアタッチするDOM要素の詳細と方法を処理します)、次のようなGoogle Maps API独自のイベントシステムを使用する必要があります。
google.maps.event.addListener(marker, 'click', function() {
marker.setVisible(false); // maps API hide call
});
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
});
}
これを理解しようとすると、何年もかかりました。ベンへの多大な信用!ありがとう!
ベンはあなたに半分の答えを提供しました。マーカークリックイベントを検出できたら、マーカーをマップから「非表示」にするか、削除する必要があります。 Googleマップでこれを行う標準的な方法は、これを行うことです。
this.setMap(null);
その後、nullではなくsetMapを使用してマップオブジェクトを割り当てることにより、マップを再度表示できます。
marker
はGoogleマップオブジェクトであり、DOM要素ではありません。 JqueryはDOM要素で機能します。
可視性true
を設定してマーカーを表示し、可視性false
を設定してマーカーを非表示にできます。
marker.setVisible(false); // hide the marker
マーカーを非表示にできるかどうかはわかりませんが、クリックイベントの適切なフックは、marker
を宣言するときにこのようなことをすることです。
google.maps.event.addListener(marker, 'click', function() {
// do your hide here
});
マーカーを「隠す」のではなく、マップから削除する必要がある場合があります。
何のためにマーカーを隠そうとしていますか?マーカーを再表示できる必要がありますか?これをどのように達成する予定ですか?