From 3b48c6a5526d74e44ea1155e6e20ae8839629a4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Sandvik?= Date: Mon, 23 Dec 2019 16:06:22 +0100 Subject: [PATCH] fix: spider handling --- src/layers/Cluster.js | 5 ++++- src/layers/DonutCluster.js | 1 - src/layers/Spider.js | 25 +++++++++++++++---------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/layers/Cluster.js b/src/layers/Cluster.js index a2681389..cdbb1c57 100644 --- a/src/layers/Cluster.js +++ b/src/layers/Cluster.js @@ -139,7 +139,10 @@ class Cluster extends Layer { this.setOpacity(this.options.opacity) } - onRemove() {} + onRemove() { + this.spider.unspiderfy() + this.spider = null + } } export default Cluster diff --git a/src/layers/DonutCluster.js b/src/layers/DonutCluster.js index 08d9fa1d..896d11d9 100644 --- a/src/layers/DonutCluster.js +++ b/src/layers/DonutCluster.js @@ -139,7 +139,6 @@ class DonutCluster extends Cluster { for (const id in this.clusters) { this.clusters[id].setOpacity(opacity) } - this.setClusterOpacity(this.spider.getId(), true) } } diff --git a/src/layers/Spider.js b/src/layers/Spider.js index 1137c7ca..2116c36e 100644 --- a/src/layers/Spider.js +++ b/src/layers/Spider.js @@ -39,21 +39,27 @@ const Spider = function(map, options) { } const spiderfy = (clusterId, lnglat, features) => { - spider.spiderfy() - spiderId = clusterId + if (clusterId !== spiderId) { + spider.spiderfy(lnglat, features) + spiderId = clusterId + + map.on('click', unspiderfy) + } } const unspiderfy = () => { - spider.unspiderfy() + if (spiderId) { + spider.unspiderfy() - if (options.onClose) { - options.onClose(spiderId) - } + if (options.onClose) { + options.onClose(spiderId) + } - spiderId = null - } + spiderId = null - const remove = () => map.off('click', unspiderfy) + map.off('click', unspiderfy) + } + } const isExpanded = clusterId => clusterId === spiderId @@ -90,7 +96,6 @@ const Spider = function(map, options) { spiderfy, unspiderfy, setOpacity, - remove, isExpanded, getId, }