2011-11-01 5 views
23

Próbuję usunąć znacznik, który został zainicjowany tak:Usuwanie znacznika w 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); 
}); 

wszystko działa doskonale z wyjątkiem, że gdy dwukrotnie kliknij go, aby usunąć to, co mam na Konsola błędów jest następująca:

TypeError: Object # has no method 'removeOverlay'

Co robię źle?

+6

więc "wszystko" działa "doskonale" z wyjątkiem swojej mechanizm usuwania _entire_. –

Odpowiedz

65

Brak funkcji usuwaniaOverlay na obiekcie . Wygląda na to, że masz tylko jeden znacznik, po co używać tablicy? Wystarczy zmienić:

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

do tego:

marker.addListener("dblclick", function() { 
    marker.setMap(null); 
}); 
+0

Co zrobić, jeśli mam wiele znaczników i chcę usunąć konkretny? Czy mogę odwołać się do "marker [index]"? –

+1

Tak, masz tablicę wszystkich swoich znaczników, możesz odwołać się do nich w ten sposób. – duncan

+0

Dla każdego, kto czyta tę odpowiedź, możesz przeczytać więcej na ten link: https://developers.google.com/maps/documentation/javascript/examples/marker-remove –