Hi,
I am parsing all entities that I added to my viewer, I have polylines and billboards.
I am trying to update their location dynamically and I have a different update method for polylines and for billboards.
I need to find out whether this entity is a billboard or polyline and to send it to the relevant method.
How to I find out what entity type it is?
Thanks.
Hello,
Check Cesium.defined(entity.billboard). This will be true if the entity has a billboard.
Checking Cesium.defined(entity.polyline) will be true if it has a polyline.
Best,
Hannah
Thanks Hanna.
I will use it tommorow at the office.
Hi Hannah,
For some reason I always get true even though it is a polyline and has no billboard.
Here is my code:
var currentEntities = myviewer.entities;
var i;
var j;
for (i = 0; i < reflectedEntityList.array.length; i++) {
var exist = false;
for (j = 0; j < currentEntities._entities._array.length; j++) {
/if equal update/
if(currentEntities._entities._array[j]._id === reflectedEntityList.array[i].esr.marking)
{
console.log("billboard defined = "+ Cesium.defined(currentEntities.values[j].billboard ));
console.log("polyline defined = "+ Cesium.defined(currentEntities.values[j].polyline ));
if(!Cesium.defined(currentEntities._entities._array[j].billboard)){
updateLine(currentEntities._entities._array[j],reflectedEntityList.array[i].esr);
}
else {
updateLocation(currentEntities._entities._array[j],reflectedEntityList.array[i].esr);
}
exist = true;
}
}
if (!exist) {
createEntities(reflectedEntityList.array[i].esr);
}
}
every entity I am checking returns true.
Any idea?
Hello,
As a general rule, you should never access private variables (variables starting with an _). Working with these values can have unexpected side effects. Try something like this instead:
for (var i = 0; i < viewer.entities.values.length; i++) {
var entity = viewer.entities.values[i];
var isPolyline = Cesium.defined(entity.polyline);
…
}
``
Best,
Hannah