CesiumGS / CesiumGS/cesium

EntityCluster hasLabelIndex always returns false

Open
#7,446 5 comments 0 reactions 1 assignee Claimed by @LizzieHoward View on GitHub
category - clustering FCF good first issue type - bug
Dominant language
JavaScript
Stars
15.7k
Forks
3.9k
Avg merge
4d 6h
Merged PRs (30d)
34

Description

This was [reported on the forum](https://groups.google.com/d/msg/cesium-dev/d-k4d1j3RfU/xYshjyrEAAAJ) 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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.