Tag:

铯 – 使用相机缩放多边形以在放大/缩小时匹配Lat-Lon位置

我正在努力的相机function(我认为)将提供一种方法来强制我的多边形坚持我的房子的顶部放大,放大和旋转(或相机移动)。 这个问题跟在先前已经解决的问题之后。 现在我需要一点帮助解决我的下一个问题。 我试图遵循的示例代码位于现有的摄像机控制器中的黄金标准 。 pickGlobe是用查看器的参数,世界坐标中正确的mousePosition和一个结果参数来执行的,我现在不太在意。 scene.pickPosition采用c2position( Cartesian2 ),并返回scratchDepthIntersection( Cartesian3 )。 相反,返回的值是未定义的 。 这是我的代码: function clickAction(click) { var cartesian = scene.camera.pickEllipsoid(click.position, ellipsoid); if (cartesian) { var setCartographic = ellipsoid.cartesianToCartographic(cartesian); collection.latlonalt.push( Cesium.Math.toDegrees(setCartographic.latitude).toFixed(15), Cesium.Math.toDegrees(setCartographic.longitude).toFixed(15), Cesium.Math.toDegrees(setCartographic.height).toFixed(15) ); lla.push(Cesium.Math.toDegrees(setCartographic.longitude), Cesium.Math.toDegrees(setCartographic.latitude)); if (lla.length >= 4) { console.log((lla.length / 2) + ' Points Added'); } enableDoubleClick(); enableDraw(); testMe(click.position); <——————— straight from […]

铯如何在放大/缩小时缩放多边形以匹配Lat-Lon位置

我正在寻找一个Cesium Guru寻找我需要的帮助。 我是新来的铯,但我一直在与教程和一些现有的代码,我已经inheritance。 在我的铯应用程序中,我input我的地址,视图放大到我的街道。 好极了! 然后我放大一点,这样我就可以在我的房子周围绘制一个多边形。 现有的代码做得非常好。 但是, 当我缩小,然后再次放大时,我的多边形不会忠于我家的Lat-Lon位置 。 铯是否包含一个将像素缩放到lat-lon坐标的实用程序,还是需要使用诸如distanceToBoundingSphere(boundingSphere)之类的东西并自行计算? 我只想要x,y坐标; 我根本不在乎身高。 我一直在看演示和教程,到目前为止还没有find我想要的东西。 也许我已经find了一些东西,但我还不知道我是否find了。 帮帮我! ============================ CODE ===================== ============= 收集多边形的位置: singleClick只捕获该点的坐标,并在用户将鼠标拖动到新点时绘制多段线。 因此,一束多义线和每个点的坐标集合。 positionHandler.setInputAction(function (click) { cartesian = scene.camera.pickEllipsoid(click.position, ellipsoid); if (cartesian) { var setCartographic = ellipsoid.cartesianToCartographic(cartesian); asset.latlonalt.push( Cesium.Math.toDegrees(setCartographic.latitude).toFixed(15), Cesium.Math.toDegrees(setCartographic.longitude).toFixed(15), Cesium.Math.toDegrees(setCartographic.height).toFixed(15) ); lla.push(Cesium.Math.toDegrees(setCartographic.longitude), Cesium.Math.toDegrees(setCartographic.latitude)); if (lla.length >= 4) { self.loggingMessage((lla.length / 2) + ' Points […]

铯 – 绘制多边形使用相机Lat-Lon-Alt位置

这个问题与这两个有关: 铯如何在放大/缩小时缩放多边形以匹配Lat-Lon位置 铯 – 使用摄像头缩放多边形以在放大/缩小时匹配Lat-Lon位置 我所追求的来自相机的经纬度位置的示例代码位于黄金标准中,该标准似乎被烘焙到现有的相机控制器中 。 利用这个代码,我可以从摄像机的距离中获取经纬度位置,以获得与所选原始经纬度位置几乎完全相同的值,以及地球表面以上的高度。 完善! 所有示例和文档均使用度数或度数来显示多边形创build。 怎么办? 也许我错过了一些东西,但我认为能够使用特定的x,y,z坐标来创build多边形的意图,以便多边形在放大,缩小和“缩小”时“粘”到我家的顶部相机移动。 现在我有了这些值,那么用这些值绘制多边形的秘诀是什么? 仅供参考,这些是我目前的价值: =========================新信息======================= ==== redPolygon的代码工作: var redPolygon = viewer.entities.add({ name : 'Red polygon on surface', polygon : { hierarchy : Cesium.Cartesian3.fromDegreesArray([-115.0, 37.0, -115.0, 32.0, -102.0, 31.0, -102.0, 35.0, -102.0, 35.0]), material : Cesium.Color.RED } }); viewer.flyTo(redPolygon); bluePolygon的代码不起作用: var bluePolygon = viewer.entities.add({ name : […]

极坐标至笛卡尔坐标function不输出正确的数据

我有一个纬度/经度和海拔的飞行路线,我需要将它转换为cartesin X,Y,Z for cesium.js。 我正在跑到墙上试图转换这个,因为我似乎没有从我的function得到正确的结果。 var R = 6371; function polarToCartesian(latitude, longitude, elevation){ x = (R+elevation) * math.cos(latitude) * math.cos(longitude); y = (R+elevation) * math.cos(latitude) * math.sin(longitude); z = (R+elevation) * math.sin(latitude); var ar = [x,y,z]; return ar; } 我不能有正确的极地笛卡尔公式,或者我没有正确的地球半径。 我发现我的半径应该是6371,但似乎无法find相同的问题作为参考。 我部分地检查我的代码是否正确,方法是在给定位置手动添加地球的半径+飞行path的高度,并查看是否等于我的x,y,z向量的长度。 例如:x,y,z (3689.2472215653725,3183.2401988117012,13306.90338789763)是我输出的时候输出的 -93.028,44.6942,7800 纬度,经度,海拔 有人可以指出我find正确的JS代码来完成这个转换?