CesiumGS/cesium

EntityCluster hasLabelIndex always returns false

Open

#7.446 geöffnet am 2. Jan. 2019

Auf GitHub ansehen
 (3 Kommentare) (0 Reaktionen) (1 zugewiesene Person)JavaScript (3.324 Forks)batch import
FCFJTCcategory - clusteringgood first issuetype - bug

Repository-Metriken

Stars
 (11.758 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 15T 12h) (23 gemergte PRs in 30 T)

Beschreibung

This was reported on the forum with a suggested fix but I haven't had a chance to try it out and investigate it further so I'm documenting it here.

The Problem

This is the hasLabelIndex function in EntityCluster.js:

function hasLabelIndex(entityCluster, entityId) {
   return defined(entityCluster) && defined(entityCluster._collectionIndicesByEntity[entityId]) && defined(entityCluster._collectionIndicesByEntity[entityId].labelIndex);
}

The supplied entityId is an object, not a string, so defined(entityCluster._collectionIndicesByEntity[entityId]) will always be false.

Suggested Fix

I think the problem is that in addNonClusteredItem and getBoundingBox, it passes item.id as the entityId, but that's actually the entity itself. Instead, it should perhaps pass item.id.id.

It would be good to also write a test that would start out failing and is fixed after this is fixed.

How To Test

What I did to see that this was happening was launch the test suite on the EntityCluster class (using http://localhost:8080/Specs/SpecRunner.html?spec=DataSources%2FEntityCluster) and placing a console.log to see that it does indeed always return false, and passes an object instead of a string.

@hpinkos maybe we can label this "Good First Issue" ?

Contributor Guide