3

尝试切换 MarkerClusterer (V3) 的可见性:

var hydrantsShowing = true;  

function ToggleHydrants() {  
    var markers = hydrantsClusterer.getMarkers();

    for (var i = 0; i < markers.length; i++) {
        markers[i].setVisible(!hydrantsShowing);
    }

    hydrantsShowing = !hydrantsShowing;
}

标记确实会切换,但有两个问题:
1. 必须稍微平移地图才能进行更改。
2. MarkerClusterer 图标(带有数字)始终存在,即使在标记不可见之后也是如此。

我也尝试过使用 setMap 方法,但行为类似:

var hydrantsShowing = true;  

function ToggleHydrants() {  
    var markers = hydrantsClusterer.getMarkers();

    if (hydrantsShowing) {
        for (var i = 0; i < markers.length; i++) {
            markers[i].setMap(null);
        }
    }
    else {
        for (var i = 0; i < markers.length; i++) {
            markers[i].setMap(gmap);
        }
    }

    hydrantsShowing = !hydrantsShowing;
}
4

1 回答 1

5

改用MarkerClustererPlus解决了这个问题。

var hydrantsShowing = true;  

function ToggleHydrants() {
  var markers = hydrantsClusterer.getMarkers();

  for (var i = 0; i < markers.length; i++) {
      markers[i].setVisible(!hydrantsShowing);
  }

  hydrantsClusterer.repaint();
  hydrantsShowing = !hydrantsShowing;
}  

设置可见性后调用repaint()对所有问题进行排序。
原来的MarkerClusterer没有这样的功能。

于 2012-07-17T08:20:47.750 回答