У меня есть 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(); };
Итак, как я понимаю, у меня есть контекстное меню с опцией "Удалить маркер". Я связываю слушателя "rightclick" во время добавления маркера, чтобы отобразить это меню.
Все работает без проблем до этого момента.
Но когда я пытаюсь щелкнуть маркер для удаления; он производит только последний добавленный маркер. Когда я попробую еще раз; ничего не происходит.
Итак, моя идея - получить идентификатор щелкнутого маркера (или что-то, что может быть полезно) и запустить эту функцию удаления в соответствии с этим.
Коротко; Я хочу удалить маркер, на который я нажал, с карты с несколькими маркерами.
Есть ли у вас подход к решению этой проблемы?
Спасибо заранее!
РЕШИТЬ!
Вот решение. Спасибо, Фатих. это невозможно без вашего руководства:
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: "В этом случае достаточно щелчка правой кнопкой мыши"
Спасибо!