HERE映射JS API v3:监听' clusteringend '事件

HERE Maps JS API v3: listen to `clusteringend` event

本文关键字:clusteringend 事件 监听 映射 JS API v3 HERE      更新时间:2023-09-26

是否有方便的方法来判断群集过程是否已经完成/结束?我似乎没有在集群提供程序中看到任何我可以收听的本机clusteringend事件。

这几天我一直在想这个问题。= (

无所谓。而不是等待一些令人失望的答案从一些HERE地图新手,我试图解决我的问题,并做了一些奇怪的像这样(没有彻底测试,但它一直工作得很好到目前为止):

var
/*
 * Work "listen-to-clusteringend-event-issue" around.
 */
processedNoisePointCounter   = 0,
incrementProcessedNoisePoint = function () {
    processedNoisePointCounter++;
    if (processedNoisePointCounter === dataPoints.length) {
        map.dispatchEvent('clusteringend');
    }
},
clusteredDataProvider        = new H.clustering.Provider([]),
defaultTheme                 = clusteredDataProvider.getTheme(),
customTheme                  = {
    /**
     *
     * @implements {H.clustering.ITheme.getClusterPresentation}
     */
    getClusterPresentation: function (cluster) {
        var clusterMarker = defaultTheme.getClusterPresentation.call(defaultTheme, cluster);
        cluster.forEachEntry(function (entry) {
            if (!entry.isCluster()) {
                incrementProcessedNoisePoint();
            }
        });
        return clusterMarker;
    },
    /**
     *
     * @implements {H.clustering.ITheme.getNoisePresentation}
     */
    getNoisePresentation: function (noisePoint) {
        var noiseMarker = defaultTheme.getNoisePresentation.call(defaultTheme, noisePoint);
        incrementProcessedNoisePoint();
        return noiseMarker;
    }
};
clusteredDataProvider.setTheme(customTheme);
clusteredDataProvider.setDataPoints(dataPoints);
var layer = new H.map.layer.ObjectLayer(clusteredDataProvider);
map.addLayer(layer);
map.addEventListener('clusteringend', function () {
    var message = 'Clustering allegedly ends. ;)';
    console.log(message);
    window.alert(message);
});