Цезий - использование камеры для масштабирования многоугольника в соответствии с позициями Lat-Lon при увеличении / уменьшении

Я борюсь с функциональностью камеры, которая (я думаю) обеспечит способзаставить мой полигон придерживаться вершины моего дома при уменьшении, увеличении и повороте (или перемещении камеры).

Этот вопрос следует за ранеевопрос это было решено. Теперь мне нужна небольшая помощь в решении моей следующей проблемы.

Пример кода, которому я пытаюсь следовать, находится взолотой стандарт, который, кажется, встроен в существующий контроллер камеры здесь.

pickGlobe выполняется с параметрами средства просмотра, правильной позицией мыши в мировых координатах и ​​параметром результата, который меня сейчас не волнует.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 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.

Ответы на вопрос(1)

Ваш ответ на вопрос