2012-01-26 29 views
7

Hiện nay tôi có một tập hợp các dấu hiệu và tôi cụm họ như thế này:markercluster không thay đổi sau khi setVisible

var markerCluster = new MarkerClusterer(map, cm_mapMarkers); 

Nhưng tôi cũng có một bộ lọc mà tôi sử dụng để thiết lập cột mốc có thể nhìn thấy sai hoặc đúng. Thật không may khi tôi đặt điểm đánh dấu là ẩn (sai), số lượng cụm không thay đổi.

Vì vậy, tôi đã tìm kiếm phương pháp để làm điều này:

tôi thử như sau:

MarkerClusterer.redraw(); 
MarkerClusterer.repaint(); 

Cả hai kết quả: không có phương pháp 'sơn' không có phương pháp 'vẽ lại'

đây là một JSfiddle:

http://jsfiddle.net/tDYcX/30/

Có ai biết tôi đang làm gì sai không?

Cảm ơn trước

Trả lời

14

tôi cố gắng làm điều đó bằng markerclustererplus và sử dụng markerCluster.setIgnoreHidden(true); and markerCluster.repaint();

+0

Giải pháp của bạn hoàn toàn phù hợp với tôi, cảm ơn bạn! – AlexB

+0

Dude guy! Đã tìm kiếm giải pháp này trong nhiều tuần. Cảm ơn bạn. –

2

MarkerClusterer không thực sự được thiết kế cho loại điều đó. Cách dễ nhất để thực hiện những gì bạn muốn là clearMarkers() rồi addMarkers(markers) bằng một mảng đánh dấu mới phù hợp với bộ lọc của bạn.

+0

Có thực sự không có cách nào khác? Tôi nghĩ vẽ lại hoặc sơn lại sẽ hoạt động .... – Emrulez

+0

MarkerClusterer không quan tâm/chú ý đến trạng thái đánh dấu có thể nhìn thấy, nó chỉ sử dụng vị trí. Điểm đánh dấu chỉ được thêm vào bản đồ khi chỉ có 1 điểm đánh dấu trong một cụm. – skarE

1

Sau một thời gian cố gắng, tôi tìm thấy một giải pháp mà làm việc, có thể hữu ích cho một ai đó ngoài kia ...

Lưu markerCluster của bạn và bản đồ của bạn (mymap) trong các biến.

Sau đó, vòng lặp throuth tất cả các dấu hiệu có sẵn của bạn và như thế này:

if (show) { 
     markerCluster.addMarker(markers[i]); 

     if (markers[i].getMap == null) 
      markers[i].marker.setMap(mymap); 
     showing++; 
    } else { 

     markerCluster.removeMarker(markers[i]); 

     if (markers[i].getMap != null) 
      markers[i].marker.setMap(null); 
    } 
Các vấn đề liên quan