我正在努力解决相机功能(我认为)可以提供一种方法强制我的多边形粘在我房子的顶部缩小、放大和旋转(或相机移动)。
这个问题遵循较早的question问题已解决。现在我需要一点帮助来解决我的下一个问题。
我试图遵循的示例代码位于黄金标准似乎已融入现有的相机控制器中.
挑选地球仪使用查看器的参数、世界坐标中正确的 mousePosition 和结果参数执行,我现在不关心这些参数。场景.pickPosition占据 c2 位置 (笛卡尔2)并且应该返回scratchDepthIntersection(笛卡尔3)。相反,返回值是不明确的.
这是我的代码:
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 the mouse click
}
}
var pickedPosition;
var scratchZoomPickRay = new Cesium.Ray();
var scratchPickCartesian = new Cesium.Cartesian3();
function testMe(c2MousePosition) { <--------------------- straight from the mouse click
if (Cesium.defined(scene.globe)) {
if(scene.mode !== Cesium.SceneMode.SCENE2D) {
pickedPosition = pickGlobe(viewer, c2MousePosition, scratchPickCartesian);
} else {
pickedPosition = camera.getPickRay(c2MousePosition, scratchZoomPickRay).origin;
}
}
}
var pickGlobeScratchRay = new Cesium.Ray();
var scratchRayIntersection = new Cesium.Cartesian3();
var c2position = new Cesium.Cartesian2();
function pickGlobe(viewer, c2MousePosition, result) { <--------------------- straight from the mouse click
c2position = c2MousePosition; <--------------------- setting to Cartesian2
var scratchDepthIntersection = new Cesium.Cartesian3();
if (scene.pickPositionSupported) {
scratchDepthIntersection = scene.pickPosition(c2MousePosition); <--------------------- neither works!
}
}
这是我的变量:
结果如下:
以下是让此代码正常工作的我的问题:
1. 为什么scratchDepthIntersection没有被设置?c2position 是 Cartesian2,c2MousePosition 直接来自 mouse.click.position,scratchDepthIntersection 是新的 Cartesian3。