Đơn giản hóa và mở rộng giải pháp được ủng hộ nhiều nhất , bạn có thể tạo điểm đánh dấu trong quá trình xử lý sự kiện nhấp chuột vào điểm đánh dấu, cho phép bạn đóng gói việc loại bỏ nó do closeclick
sự kiện của biểu tượng x cùng một lúc.
Đây là một ví dụ bao gồm việc tránh tạo cửa sổ thông tin trùng lặp bằng cách thêm hasInfoWindow
trạng thái boolean trên các điểm đánh dấu.
newMarker.addListener('click', function () {
if (newMarker['hasInfoWindow'] !== true) {
newInfoWindow = new google.maps.InfoWindow({content: infoContent});
mapSet['infoWindowsObj'].push(newInfoWindow);
newMarker['hasInfoWindow'] = true;
newInfoWindow.open(mapSet, newMarker);
google.maps.event.addListener(newInfoWindow, 'closeclick', function () {
newInfoWindow.setMap(null);
newMarker['hasInfoWindow'] = false;
mapSet['infoWindowsObj'].filter(arrayItem => arrayItem !== newInfoWindow);
});
}
});
Sau đó, nếu bạn muốn xóa tất cả các cửa sổ thông tin đang mở do sự kiện nhấp chuột trên bản đồ, bạn có thể lặp lại nội dung của mapSet['infoWindowsObj']
để xóa hoàn toàn từng cửa sổ.
Tôi tin rằng hành vi này cho phép bạn sử dụng infowindow trong hầu hết các trường hợp mà không cần phải thực hiện lại toàn bộ theo google ví dụ bật lên tùy chỉnh .