gpt4 book ai didi

javascript - CesiumJS:可拖动点跳转到静态点位置

转载 作者:行者123 更新时间:2023-11-29 23:46:51 28 4
gpt4 key购买 nike

我已经编写了一些函数来在 Cesium 中绘制可拖动和静态的点。但是,将它们一起使用时我遇到了一个大问题。

我可以通过在 map 上单击来绘制可拖动的点,然后通过单击和拖动来移动它们。但是,如果我在绘制可拖动点后绘制静态点,则可拖动点会跳转到静态点的位置!我仍然可以拖动该点,但它总是会快速回到静态点位置。

这里有一个 SandcaSTLe 演示来说明我的问题 - http://cesiumjs.org/Cesium/Apps/Sandcastle/?src=Hello%20World.html&label=Showcases&gist=54a2252d95768ca89d23948ad010356a

在这个例子中,在 map 上的任何点击都会创建一个可拖动的点(红点)。脚本末尾有两次超时,一次5s后绘制静态点,一次10s后在不同位置绘制静态点。静态点是紫色的,比可拖动的小很多。

正如您将看到的,如果您在前 5 秒内绘制一个可拖动点,它将跳转到第一个静态点的位置。

这是怎么回事?!

最佳答案

Cesium 团队的 Rachel Hwang 为我解决了这个问题。这是她的解决方案:

This:

 let positionCallback = () => {

return waypointPosition;

};

Should be:

 let positionCallback = (time, result) => {

return waypointPosition.clone(result);

};

The reason is that the signature for the CallbackProperty callback (https://cesiumjs.org/Cesium/Build/Documentation/CallbackProperty.html#~Callback) takes a time and result. If result is provided then you MUST store the result into that existing object and return it (otherwise you should return a new value). Calling clone(result) does just that. The reason it is done this way is because we make heavy use of scratch variables to avoid memory allocations.

SandcaSTLe 现在可以按要求运行 - http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Hello%20World.html&label=Showcases&gist=54a2252d95768ca89d23948ad010356a

关于javascript - CesiumJS:可拖动点跳转到静态点位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43666879/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com