MarkerClusterGroup не обновляет данные предполагаемым образом

В настоящее время я разрабатываю визуализацию для Power BI, используя библиотеку листовок и markerclustergroup в качестве плагина.

MarkerClusterGroup отлично работает, когда фильтрация данных, используемых в dataView, не выполняется.

Вот что я сделал до сих пор..

// Удаляем слой кластеров, когда доступны новые данные. если (это.центр){

      this.clusters.clearLayers();

        }

// Здесь я создал свои маркеры:

this.centr = L.geoJson(centroids,{
              pointToLayer: function(feature,geometry){
                var marker = new customMarker(geometry,{icon:icon});
                marker.value = Population;
                marker.name = Name;
                return marker;
              }
            });

// Здесь я очищаю кластеры, если они не пустые на случай применения фильтра.

          if (this.clusters != undefined){
            this.clusters.clearLayers();
}

// Здесь Создание кластеров

                  this.clusters = L.markerClusterGroup({
                  polygonOptions: {
                    fillColor: "Blue",
                    color:"black"
                  },
                  maxClusterRadius:100,
                  singleMarkerMode: true,
                  showCoverageOnHover: true,
                  iconCreateFunction: function(cluster) {
                    // Some Code
                    if (volume == 0){
                      return L.divIcon({html: '<b> Empty !</b>'});
                    }
                    else
                    return L.divIcon({html: '<b>' + volume + '</b>', iconSize: [47,15]});
                  }
                });

          this.clusters.addLayer(this.centr);
          this.map.addLayer(this.clusters);

Применяя этот код, когда я фильтрую некоторые данные, я получаю новые кластеры, но когда я уменьшаю или увеличиваю масштаб (до кластера), я получаю эту ошибку:

Uncaught TypeError: Cannot read property '_leaflet_id' of undefined
    at n (<anonymous>:38:536)
    at e.removeLayer (<anonymous>:40:805)
    at e._hideCoverage (<anonymous>:374:20)
    at e.fire (<anonymous>:38:16896)
    at e._moveEnd (<anonymous>:39:9725)
    at e.<anonymous> (<anonymous>:39:16415)

person zahma    schedule 22.07.2017    source источник
comment
Не могли бы вы поделиться примером живого воспроизведения, например. используя фрагмент кода, jsfiddle, plunker и т. д.?   -  person ghybs    schedule 25.07.2017


Ответы (1)


if (this.clusters != undefined)

Hi,

Попробуйте с if (this.clusters !== undefined) с !==

person Iperactor    schedule 22.07.2017
comment
Проблема не в этом, он попадает в If, проблема в удалении слоев из this.map. Потому что нельзя вызвать this.map.removeLayer(this.clusters) - person zahma; 23.07.2017