私は以下のように2つの機能を持っています:
function addMarker() {
marker = new google.maps.Marker({
position: Gpoint,
map: map,
draggable: true,
animation: google.maps.Animation.DROP
});
map.panTo(Gpoint);
google.maps.event.addListener(marker, "rightclick",
function (point) {
showContextMarker(point.latLng); } );
$('.contextmenu').remove();
};
function delMarker() { marker.setMap(null); $('.contextmenu').remove(); };
したがって、理解できるように、「マーカーの削除」オプションを持つコンテキストメニューがあります。このメニューを表示するために、マーカーの追加中に「右クリック」リスナーをバインドしています。
この瞬間まで、すべてが問題なく動作しています。
しかし、削除するマーカーをクリックしようとすると; 最後に追加されたマーカーのみに影響します。もう一度試してみると; 何も起こりません。
だから私の考えは、クリックされたマーカーのID(または役に立つかもしれないもの)を取得し、これに従ってこの削除機能を実行することです。
簡単に言えば; 複数のマーカーがある地図から、クリックしたマーカーを削除したい。
この問題を解決する方法はありますか?
前もって感謝します!
解決しました!
これが解決策です。ファティありがとう。あなたの指導なしでは不可能でした:
var id;
var markers = {};
var addMarker = function () {
marker = new google.maps.Marker({
position: Gpoint,
map: map,
draggable: true,
animation: google.maps.Animation.DROP
});
map.panTo(Gpoint);
id = marker.__gm_id
markers[id] = marker;
google.maps.event.addListener(marker, "rightclick", function (point) { id = this.__gm_id; delMarker(id) });
}
var delMarker = function (id) {
marker = markers[id];
marker.setMap(null);
}
削除機能の呼び出し: delMarker(id)
Ps: 「この場合は右クリックで十分です」
ありがとうございました!