# Actual position in 2D

**URL:** <https://community.cesium.com/t/actual-position-in-2d/13473>\
**Category:** CesiumJS\
**Created:** [May 4, 2021, 8:31pm UTC](https://community.cesium.com/t/actual-position-in-2d/13473 "2021-05-04T20:31:54Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![IvanLudvig](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/ivanludvig/32/3730_2.png) [@IvanLudvig](https://community.cesium.com/u/IvanLudvig)\
**Post date:** [May 4, 2021, 8:31pm UTC](https://community.cesium.com/t/actual-position-in-2d/13473/1 "2021-05-04T20:31:54Z")

</div>

I’ve integrated cesium with three js using this tutorial:

> **[Integrating Cesium with Three.js](https://cesium.com/blog/2017/10/23/integrating-cesium-with-threejs/)**
>
> This is a guest post by Wilson Muktar about integrating Three.js with Cesium

In 3D mode it works as expected. But in 2D and CV mode it doesn’t: the positions are off.  
I found this function for calculating the actual position in Cesium’s source code: [cesium/SceneTransforms.js at master · CesiumGS/cesium · GitHub](https://github.com/CesiumGS/cesium/blob/master/Source/Scene/SceneTransforms.js#L302)  
It works for Columbus view, but not in 2D. The objects seem to be too high above and aren’t correctly positioned when moving/zooming the camera.

P.S. For Columbus view I use this function:

```auto
const transformCV = (pos: Cartesian3) => {
    const temp = cartToVec(cesium.scene.mapProjection.project(Ellipsoid.WGS84.cartesianToCartographic(pos)));
    return Cartesian3.fromArray([temp.z, temp.x, temp.y]);
}

```

According to the source code, it should be like this in 2D:

```auto
const transform2D = (pos: Cartesian3) => {
    const temp = cartToVec(cesium.scene.mapProjection.project(Ellipsoid.WGS84.cartesianToCartographic(pos)));
    return Cartesian3.fromArray([0, temp.x, temp.y]);
}

```

But it doesn’t work

---

<div class="post-metadata">

**Author:** ![janine](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/janine/32/5135_2.png) [@janine](https://community.cesium.com/u/janine)\
**Post date:** [July 19, 2021, 9:09pm UTC](https://community.cesium.com/t/actual-position-in-2d/13473/2 "2021-07-19T21:09:31Z")

</div>

Hi @IvanLudvig,

I apologize for the delayed response. Can you put together a [Sandcastle](https://sandcastle.cesium.com/) that demonstrates your issue? I would be able to offer more help then.

Best regards,  
Janine

---

<div class="post-metadata">

**Author:** ![jingjinjielin](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/jingjinjielin/32/9623_2.png) [@jingjinjielin](https://community.cesium.com/u/jingjinjielin)\
**Post date:** [June 13, 2022, 9:30am UTC](https://community.cesium.com/t/actual-position-in-2d/13473/3 "2022-06-13T09:30:59Z")

</div>

I also encountered this problem, did you solve it?

---

<div class="post-metadata">

**Author:** ![IvanLudvig](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/ivanludvig/32/3730_2.png) [@IvanLudvig](https://community.cesium.com/u/IvanLudvig)\
**Post date:** [June 13, 2022, 1:12pm UTC](https://community.cesium.com/t/actual-position-in-2d/13473/4 "2022-06-13T13:12:57Z")

</div>

I solved it by making my own switcher for projection modes. When 2D mode is selected, I switch to Columbus view with camera looking directly down with tilt disabled

---

<div class="post-metadata">

**Author:** ![jingjinjielin](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/jingjinjielin/32/9623_2.png) [@jingjinjielin](https://community.cesium.com/u/jingjinjielin)\
**Post date:** [June 14, 2022, 12:58am UTC](https://community.cesium.com/t/actual-position-in-2d/13473/5 "2022-06-14T00:58:24Z")

</div>

Can you share the code to me
