# Force render update after removing polygon position

**URL:** <https://community.cesium.com/t/force-render-update-after-removing-polygon-position/2186>\
**Category:** CesiumJS\
**Created:** [March 18, 2015, 4:33pm UTC](https://community.cesium.com/t/force-render-update-after-removing-polygon-position/2186 "2015-03-18T16:33:22Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Paul\_Greaney1](https://avatars.discourse-cdn.com/v4/letter/p/5daacb/32.png) [@Paul\_Greaney1](https://community.cesium.com/u/Paul_Greaney1)\
**Post date:** [March 18, 2015, 4:33pm UTC](https://community.cesium.com/t/force-render-update-after-removing-polygon-position/2186/1 "2015-03-18T16:33:22Z")

</div>

Good Morning,

I'm trying to get the polygon on the map to update after I've removed positions from it's hierarchy. When I add positions, it updates beautifully; however removing the positions keeps the old polygon shape until I click to keep drawing.

My code for updating the polygon is as such:

var mPosCartographicArray = scene.globe.ellipsoid.cartesianArrayToCartographicArray(mPos);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var entityRectangle = Cesium.Rectangle.fromCartographicArray(mPosCartographicArray);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var entityCenter = Cesium.Rectangle.center(entityRectangle);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entityCenter = Cesium.Cartesian3.fromRadians(entityCenter.longitude, entityCenter.latitude);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentEntity.position = entityCenter;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overlayEntities.suspendEvents();  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(mPos);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentEntity.polygon.hierarchy = new Cesium.PolygonHierarchy(mPos);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overlayEntities.resumeEvents();  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentEntity.polygon.material = new Cesium.ColorMaterialProperty(myColor);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentEntity.polygon.show = inOverlay.show;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentEntity.label.text = inOverlay.name;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentEntity.label.show = inOverlay.show;

Is there a way to force a visual update?

---

<div class="post-metadata">

**Author:** ![Matt\_Amato](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/matt_amato/32/1993_2.png) [@Matt\_Amato](https://community.cesium.com/u/Matt_Amato)\
**Post date:** [March 18, 2015, 9:28pm UTC](https://community.cesium.com/t/force-render-update-after-removing-polygon-position/2186/2 "2015-03-18T21:28:14Z")

</div>

How are you updating the positions? Assuming you are not updating the positions too often, you can just re-assign the value.

currentEntity.polygon.hierarchy = new Cesium.PolygonHierarchy(mPos);

---

<div class="post-metadata">

**Author:** ![Paul\_Greaney1](https://avatars.discourse-cdn.com/v4/letter/p/5daacb/32.png) [@Paul\_Greaney1](https://community.cesium.com/u/Paul_Greaney1)\
**Post date:** [March 18, 2015, 9:52pm UTC](https://community.cesium.com/t/force-render-update-after-removing-polygon-position/2186/3 "2015-03-18T21:52:38Z")

</div>

I'm updating the positions just like that. they're being passed in upon user addition of positions or removal. However, I did find that it's just when there are three positions left. If there are three positions and I remove one then it doesn't update the polygon. If there are four and I remove one, it becomes a triangle as expected.

---

<div class="post-metadata">

**Author:** ![Matt\_Amato](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/matt_amato/32/1993_2.png) [@Matt\_Amato](https://community.cesium.com/u/Matt_Amato)\
**Post date:** [March 18, 2015, 9:58pm UTC](https://community.cesium.com/t/force-render-update-after-removing-polygon-position/2186/4 "2015-03-18T21:58:58Z")

</div>

Can you create a small Sandcastle example that shows the problem so that I can debug it? I can’t reproduce this on my end.

What version of Cesium are you using?

---

<div class="post-metadata">

**Author:** ![Paul\_Greaney1](https://avatars.discourse-cdn.com/v4/letter/p/5daacb/32.png) [@Paul\_Greaney1](https://community.cesium.com/u/Paul_Greaney1)\
**Post date:** [March 18, 2015, 10:01pm UTC](https://community.cesium.com/t/force-render-update-after-removing-polygon-position/2186/5 "2015-03-18T22:01:06Z")

</div>

1.7.1 and I'll see what I can come up with.

---

<div class="post-metadata">

**Author:** ![Paul\_Greaney1](https://avatars.discourse-cdn.com/v4/letter/p/5daacb/32.png) [@Paul\_Greaney1](https://community.cesium.com/u/Paul_Greaney1)\
**Post date:** [March 18, 2015, 10:10pm UTC](https://community.cesium.com/t/force-render-update-after-removing-polygon-position/2186/6 "2015-03-18T22:10:39Z")

</div>

I’m replying to this from the e-mail chain instead of the forum in order to attach. I was able to recreate the issue. I hope it attached correctly

[Polygon Removal Example.html](https://community.cesium.com/uploads/short-url/tsZgMbiJP5gb6XNYx1oIJf74ZQB.html) (5.98 KB)

---

<div class="post-metadata">

**Author:** ![Paul\_Greaney1](https://avatars.discourse-cdn.com/v4/letter/p/5daacb/32.png) [@Paul\_Greaney1](https://community.cesium.com/u/Paul_Greaney1)\
**Post date:** [March 18, 2015, 10:13pm UTC](https://community.cesium.com/t/force-render-update-after-removing-polygon-position/2186/7 "2015-03-18T22:13:07Z")

</div>

Okay, so I replyed via e-mail but I'm not sure if that ended up working, so I'll post my sandcastle text here:  
var viewer = new Cesium.Viewer('cesiumContainer');

var scene = viewer.scene;  
var canvas = viewer.canvas;  
canvas.setAttribute('tabindex', '0'); // needed to put focus on the canvas  
canvas.onclick = function() {  
&nbsp;&nbsp;&nbsp;&nbsp;canvas.focus();  
};  
var ellipsoid = scene.globe.ellipsoid;

// disable the default event handlers  
scene.screenSpaceCameraController.enableRotate = false;  
scene.screenSpaceCameraController.enableTranslate = false;  
scene.screenSpaceCameraController.enableZoom = false;  
scene.screenSpaceCameraController.enableTilt = false;  
scene.screenSpaceCameraController.enableLook = false;

var mPos = Cesium.Cartesian3.fromDegreesArray([-115.0, 37.0,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-115.0, 32.0,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-107.0, 33.0]);  
var handler = new Cesium.ScreenSpaceEventHandler(canvas);  
var redPolygon = viewer.entities.add({  
&nbsp;&nbsp;&nbsp;&nbsp;name : 'Red polygon on surface',  
&nbsp;&nbsp;&nbsp;&nbsp;polygon : {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hierarchy : mPos,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;material : Cesium.Color.RED  
&nbsp;&nbsp;&nbsp;&nbsp;}  
});

handler.setInputAction(function(movement) {  
&nbsp;&nbsp;&nbsp;&nbsp;mPos.pop();  
&nbsp;&nbsp;&nbsp;var mPosCartographicArray = scene.globe.ellipsoid.cartesianArrayToCartographicArray(mPos);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var entityRectangle = Cesium.Rectangle.fromCartographicArray(mPosCartographicArray);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var entityCenter = Cesium.Rectangle.center(entityRectangle);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entityCenter = Cesium.Cartesian3.fromRadians(entityCenter.longitude, entityCenter.latitude);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redPolygon.position = entityCenter;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redPolygon.polygon.hierarchy = new Cesium.PolygonHierarchy(mPos);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redPolygon.label = new Cesium.LabelGraphics({  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text: 'new label',  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scale: 0.4  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});  
}, Cesium.ScreenSpaceEventType.LEFT\_DOWN);

---

<div class="post-metadata">

**Author:** ![Matt\_Amato](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/matt_amato/32/1993_2.png) [@Matt\_Amato](https://community.cesium.com/u/Matt_Amato)\
**Post date:** [March 20, 2015, 4:28pm UTC](https://community.cesium.com/t/force-render-update-after-removing-polygon-position/2186/8 "2015-03-20T16:28:11Z")

</div>

I think I see the problem. If I add extra points to mPos, such as -107.0, 34.0, -107.0, 35.0, -107.0, 36.0, everything works as expected until it gets down to 2 points. Once the Polygon has less than 3 points it should disappear, the fact that it isn’t is definitely a bug that needs to be fixed. It looks like the problem is that when a geometry because “invalid”, we don’t remove the previous valid geometry. The bug is specific to static data with a single geometry and doesn’t trigger with dynamic geometry.

I opened a new issue to fix this (probably for 1.8): [https://github.com/AnalyticalGraphicsInc/cesium/issues/2591](https://github.com/AnalyticalGraphicsInc/cesium/issues/2591)

---

<div class="post-metadata">

**Author:** ![Paul\_Greaney1](https://avatars.discourse-cdn.com/v4/letter/p/5daacb/32.png) [@Paul\_Greaney1](https://community.cesium.com/u/Paul_Greaney1)\
**Post date:** [March 20, 2015, 4:37pm UTC](https://community.cesium.com/t/force-render-update-after-removing-polygon-position/2186/9 "2015-03-20T16:37:04Z")

</div>

Alrighty,

well thanks for looking into it, I really appreciate the responsiveness.
