Удаление маркера в Google Maps API v3

Я пытаюсь удалить маркер, который был инициализирован следующим образом:

marker = new google.maps.Marker({
    position: latLng,
    map: map,
    draggable: true,
    animation: google.maps.Animation.DROP,
    title: 'Marker 1',
    icon: redPin
});

google.maps.event.addListener(marker, "click", function() {
    showMarkerDialog(marker.position, "marker");
});

google.maps.event.addListener(marker, "dblclick", function() {
    // Add a alert: Are you sure you want to remove this marker?

    map.removeOverlay(marker);
});

Все работает отлично, за исключением того, что когда я дважды щелкаю по нему, чтобы удалить то, что я получаю в консоли ошибок, это:

TypeError: у объекта # нет метода removeOverlay

Что я делаю неправильно?


person Nathan Campos    schedule 01.11.2011    source источник
comment
Итак, все работает отлично, кроме вашего механизма удаления всего.   -  person Lightness Races in Orbit    schedule 01.11.2011


Ответы (1)


Для объекта map нет функции removeOverlay. Похоже, у вас только один маркер, зачем использовать массив? Просто измените это:

google.maps.event.addListener(marker, "dblclick", function() {
    map.removeOverlay(marker);
});

к этому:

marker.addListener("dblclick", function() {
    marker.setMap(null);
});
person duncan    schedule 01.11.2011
comment
Что делать, если у меня несколько маркеров, и я хочу удалить один из них? Могу я ссылаться на маркер [указатель]? - person Bruno Vaz; 03.02.2016
comment
Да, у вас есть массив всех ваших маркеров, вы можете ссылаться на них вот так. - person duncan; 03.02.2016
comment
Любой, кто читает этот ответ, может получить дополнительную информацию по этой ссылке: developers.google .com / maps / documentation / javascript / examples /. - person Paulo Oliveira; 22.11.2017