From 6cda7fc77f1d3b38edc72fc1ebed8096e5fa5672 Mon Sep 17 00:00:00 2001 From: Nikola Plesa Date: Thu, 6 Aug 2020 16:33:40 +0200 Subject: [PATCH] fix: remove detections from image when features are turned off --- modules/services/mapillary.js | 36 ++++++++++++++++++++----------- modules/svg/mapillary_position.js | 2 +- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/modules/services/mapillary.js b/modules/services/mapillary.js index 91c581757..481177b7c 100644 --- a/modules/services/mapillary.js +++ b/modules/services/mapillary.js @@ -44,7 +44,7 @@ var dispatch = d3_dispatch('change', 'loadedImages', 'loadedSigns', 'loadedMapFe var _mlyFallback = false; var _mlyCache; var _mlyClicks; -var _mlySelectedImage; +var _mlyActiveImage; var _mlySelectedImageKey; var _mlyViewer; var _mlyHighlightedDetection; @@ -322,7 +322,7 @@ export default { }; _mlySelectedImageKey = null; - _mlySelectedImage = null; + _mlyActiveImage = null; _mlyClicks = []; }, @@ -457,13 +457,26 @@ export default { }, + resetTags: function() { + if (_mlyViewer && !_mlyFallback) { + _mlyViewer.getComponent('tag').removeAll(); // remove previous detections + } + }, + + showFeatureDetections: function(value) { _mlyShowFeatureDetections = value; + if (!_mlyShowFeatureDetections && !_mlyShowSignDetections) { + this.resetTags(); + } }, showSignDetections: function(value) { _mlyShowSignDetections = value; + if (!_mlyShowFeatureDetections && !_mlyShowSignDetections) { + this.resetTags(); + } }, @@ -490,8 +503,8 @@ export default { hideViewer: function(context) { + _mlyActiveImage = null; _mlySelectedImageKey = null; - _mlySelectedImage = null; if (!_mlyFallback && _mlyViewer) { _mlyViewer.getComponent('sequence').stop(); @@ -596,14 +609,11 @@ export default { // Clicks are added to the array in `selectedImage` and removed here. // function nodeChanged(node) { - if (!_mlyFallback) { - _mlyViewer.getComponent('tag').removeAll(); // remove previous detections - } - + that.resetTags(); var clicks = _mlyClicks; var index = clicks.indexOf(node.key); var selectedKey = _mlySelectedImageKey; - that.setSelectedImage(node); + that.setActiveImage(node); if (index > -1) { // `nodechanged` initiated from clicking on a marker.. clicks.splice(index, 1); // remove the click @@ -659,8 +669,8 @@ export default { }, - getSelectedImage: function() { - return _mlySelectedImage; + getActiveImage: function() { + return _mlyActiveImage; }, @@ -674,16 +684,16 @@ export default { }, - setSelectedImage: function(node) { + setActiveImage: function(node) { if (node) { - _mlySelectedImage = { + _mlyActiveImage = { ca: node.originalCA, key: node.key, loc: [node.originalLatLon.lon, node.originalLatLon.lat], pano: node.pano }; } else { - _mlySelectedImage = null; + _mlyActiveImage = null; } }, diff --git a/modules/svg/mapillary_position.js b/modules/svg/mapillary_position.js index 1b003331f..792025860 100644 --- a/modules/svg/mapillary_position.js +++ b/modules/svg/mapillary_position.js @@ -69,7 +69,7 @@ export function svgMapillaryPosition(projection, context) { var showViewfields = (z >= minViewfieldZoom); var service = getService(); - var node = service && service.getSelectedImage(); + var node = service && service.getActiveImage(); var groups = layer.selectAll('.markers').selectAll('.viewfield-group') .data(node ? [node] : [], function(d) { return d.key; });