2011-11-01 49 views
23

Tôi đang cố gắng để loại bỏ một marker đã được khởi tạo như thế này:Loại bỏ một Marker trong 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); 
}); 

Tất cả mọi thứ hoạt động hoàn hảo, ngoại trừ khi tôi click đúp vào nó để loại bỏ những gì tôi nhận được trên Bảng điều khiển Lỗi là:

TypeError: Object # has no method 'removeOverlay'

Tôi đang làm gì sai?

+6

Vì vậy, "tất cả mọi thứ" công trình "hoàn hảo" trừ cơ chế loại bỏ _entire_ của bạn. –

Trả lời

65

Không có hàm removeOverlay trên đối tượng bản đồ. Có vẻ như bạn chỉ có một điểm đánh dấu, tại sao lại sử dụng một mảng? Chỉ cần thay đổi này:

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

này:

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

Nếu tôi có nhiều điểm đánh dấu và muốn xóa một điểm đánh dấu cụ thể thì sao? Tôi có thể tham khảo "điểm đánh dấu [chỉ mục]" không? –

+1

Có, có một mảng của tất cả các điểm đánh dấu của bạn, sau đó bạn có thể tham khảo chúng như thế. – duncan

+0

Đối với bất kỳ ai đọc câu trả lời này, bạn có thể đọc thêm về liên kết này: https://developers.google.com/maps/documentation/javascript/examples/marker-remove –

Các vấn đề liên quan