Tôi đang tạo bản đồ tải & phá hủy các điểm đánh dấu dựa trên cả hộp giới hạn và mức thu phóng. Tôi đang gặp sự cố thực sự khi đánh dấu đúng cách để xóa, có vẻ như đôi khi cũng hoạt động trong một số trường hợp nhất định.API Google Maps v3: Các điểm đánh dấu không bị xóa
Tôi có một đối tượng chứa thông tin điểm đánh dấu, cũng chứa đối tượng điểm đánh dấu bản đồ google. Mã của tôi phát hiện nếu thị trường sẽ bị xóa dựa trên hộp giới hạn hoặc mức thu phóng. Tôi đặt đối tượng điểm đánh dấu là "setMap (null);" và sử dụng firebug tôi có thể thấy rằng nó đang được thiết lập, sau đó tôi loại bỏ các đối tượng cha mẹ hoàn toàn và chiều dài dữ liệu đối tượng được cập nhật đúng cách.
Tôi xuất ra bảng điều khiển Firebug khi đánh dấu được cho là đã bị xóa, có vẻ như đang hoạt động và tôi có thể thấy rằng điểm đánh dấu không được sắp xếp lại từ cuộc gọi ajax cho các điểm đánh dấu trên thay đổi boundingbox.
Tuy nhiên, nếu tôi phóng to xung quanh bản đồ, đôi khi tôi có thể thấy các điểm đánh dấu đang bị xóa, nếu tôi phóng to thì hãy xoay lại giữ chuột. Hoặc đôi khi, tất cả các điểm đánh dấu sẽ bị xóa nếu tôi phóng to lần đầu tiên, nhưng nếu tôi phóng to lại thì chúng sẽ không bị xóa.
Tôi phải làm điều gì đó sai trái với logic của mã của mình, tôi bị bối rối.
Bạn có thể xem là nguồn gốc của http://www.trailforks.com/map/test.php?lat=49.352247&lon=-123.202413 JS là http://www.trailforks.com/map/includes/map.js
mã để xóa một dấu hiệu là ở dưới cùng
function clearMarkerMemory(mapItem, i) {
google.maps.event.removeListener(mapItem.lis); // remove stored listener
mapper.data[i].obj.setMap(null); // remove marker
mapper.data.splice(i, 1);
console.log("removed marker "+mapItem.icon+":"+mapItem.nid+' '+mapItem.name);
};
tôi đã thêm một số debug hơn vào ra cửa sổ Console, đi đến một khu vực đơn giản của bản đồ chỉ với 2 điểm đánh dấu http://www.trailforks.com/map/test.php?lat=49.641783767&lon=-123.49878636730955&z=14
Tôi có thể thấy các điểm đánh dấu được tạo, sau đó di chuyển bản đồ ab và thấy rằng các điểm đánh dấu không được tạo lại vì chúng đã được phát hiện trong đối tượng điểm đánh dấu. Sau đó tôi di chuyển khung nhìn để một trong các điểm đánh dấu tắt màn hình và tôi có thể thấy rằng điểm đánh dấu bị xóa và chiều dài đối tượng điểm đánh dấu cập nhật. Nhưng nếu tôi xoay bản đồ trở lại điểm đánh dấu vẫn còn trên bản đồ.
Tôi đang gặp khó khăn khi tạo lại "lỗi" nếu có lỗi thực sự. Đã xem mã của bạn và nó cũng được viết và AFAICS bạn đang làm đúng. Không phải là vấn đề, nhưng bạn đã thử đặt toàn bộ đối tượng 'data [i]' thành 'null' trước khi ghép nó ra khỏi mảng chưa? – dda
+1 cho câu hỏi thông minh, được viết tốt, BTW ... – dda
Để sao chép goto quan điểm này http://www.trailforks.com/map/test.php?lat=49.344530719060245&lon=-123.1294569147949&z=13 sau đó nhấp chuột chuột để tất cả các điểm đánh dấu màu vàng ở bên trái đều tắt màn hình. sau đó kéo bản đồ trở lại theo hướng đó giữ chuột, do đó, cuộc gọi ajax của các điểm đánh dấu chưa kích hoạt, bạn sẽ thấy tất cả các điểm đánh dấu đã bị xóa. Nhưng sau đó phóng to một lần và ra ngoài và thử lại lần nữa và rất có thể sẽ bị hỏng, các điểm đánh dấu sẽ vẫn còn 100% thời gian bây giờ. Mặc dù chúng được loại bỏ khỏi đối tượng mapper.data. – Canadaka