Cesium——单击时,将地图点更改为带图标的标准标记
Cesium -- on click, change map point to standard marker with icon
我试图模仿人们在 Cesium 中使用 Waze LiveMap (https://www.waze.com/livemap) 时看到的功能。单击某个点时,它会转换为带有图标的标记。
我尝试了一些不同的事情并取得了不同程度的成功,但我已经束手无策了。有没有人对我如何进行有好的建议?
有几种不同的方法可以做到这一点,一些是高级的,一些是低级的。高级的是最简单的,所以我将从那里开始。当 Cesium Viewer 自己的选择发生变化时,它会触发一个名为 selectedEntityChanged
的事件,您可以将其连接起来以打开和关闭广告牌显示标志。
Here's a demo. For this demo, I took the original map pins demo 并添加了一些代码行:我在开始时关闭了所有广告牌的 show
标志,我添加了点数来代表现在隐藏的广告牌,然后我添加了以下代码块以在选择时切换广告牌显示标志,如下所示:
var lastSelectedPin;
viewer.selectedEntityChanged.addEventListener(function(newEntity) {
if (lastSelectedPin && lastSelectedPin.billboard) {
lastSelectedPin.billboard.show = false;
}
lastSelectedPin = newEntity;
if (lastSelectedPin && lastSelectedPin.billboard) {
lastSelectedPin.billboard.show = true;
}
});
这使用 Cesium Viewer 自己的选择系统,但会切换广告牌显示标志,使其在选中时显示,取消选中时消失。
或者,您可以深入了解 Cesium 的较低级别以进行更精细的控制,但学习曲线会更长。 Picking Demo shows off several types of picking operations, including scene.pick
, scene.drillPick
, and camera.pickEllipsoid
,它提供了多种方法来检测特定屏幕位置存在的内容。通常调用这些函数以响应鼠标移动或单击或 touch/pointer 事件,以查看用户正在与之交互的内容。
我试图模仿人们在 Cesium 中使用 Waze LiveMap (https://www.waze.com/livemap) 时看到的功能。单击某个点时,它会转换为带有图标的标记。
我尝试了一些不同的事情并取得了不同程度的成功,但我已经束手无策了。有没有人对我如何进行有好的建议?
有几种不同的方法可以做到这一点,一些是高级的,一些是低级的。高级的是最简单的,所以我将从那里开始。当 Cesium Viewer 自己的选择发生变化时,它会触发一个名为 selectedEntityChanged
的事件,您可以将其连接起来以打开和关闭广告牌显示标志。
Here's a demo. For this demo, I took the original map pins demo 并添加了一些代码行:我在开始时关闭了所有广告牌的 show
标志,我添加了点数来代表现在隐藏的广告牌,然后我添加了以下代码块以在选择时切换广告牌显示标志,如下所示:
var lastSelectedPin;
viewer.selectedEntityChanged.addEventListener(function(newEntity) {
if (lastSelectedPin && lastSelectedPin.billboard) {
lastSelectedPin.billboard.show = false;
}
lastSelectedPin = newEntity;
if (lastSelectedPin && lastSelectedPin.billboard) {
lastSelectedPin.billboard.show = true;
}
});
这使用 Cesium Viewer 自己的选择系统,但会切换广告牌显示标志,使其在选中时显示,取消选中时消失。
或者,您可以深入了解 Cesium 的较低级别以进行更精细的控制,但学习曲线会更长。 Picking Demo shows off several types of picking operations, including scene.pick
, scene.drillPick
, and camera.pickEllipsoid
,它提供了多种方法来检测特定屏幕位置存在的内容。通常调用这些函数以响应鼠标移动或单击或 touch/pointer 事件,以查看用户正在与之交互的内容。