版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liyangyang08/article/details/79831224
cesium入门(八)
交互
- 我们可以通过三种方式来通过鼠标和cesium交互
- scene.pick 通过窗口坐标来取一个对象
- scene.drillPick取一个对象列表
- Globe.pick 根据光线和地形取一个对象
// If the mouse is over a point of interest, change the entity billboard scale and color
var previousPickedEntity;
var handler = viewer.screenSpaceEventHandler;
//监听操作类型和处理函数
handler.setInputAction(function (movement) {
var pickedPrimitive = viewer.scene.pick(movement.endPosition);
var pickedEntity = Cesium.defined(pickedPrimitive) ? pickedPrimitive.id : undefined;
// Unhighlight the previously picked entity
if (Cesium.defined(previousPickedEntity)) {
previousPickedEntity.billboard.scale = 1.0;
previousPickedEntity.billboard.color = Cesium.Color.WHITE;
}
// Highlight the currently picked entity
if (Cesium.defined(pickedEntity) && Cesium.defined(pickedEntity.billboard)) {
pickedEntity.billboard.scale = 2.0;
pickedEntity.billboard.color = Cesium.Color.ORANGERED;
previousPickedEntity = pickedEntity;
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
相机模型
- 两种一种是静态的也是默认的给那在那,第二种是动态的可以自动根据参照物调整
// Create a follow camera by tracking the drone entity
function setViewMode() {
if (droneModeElement.checked) {
//自动跟
viewer.trackedEntity = drone;
} else {
//取消第一步先给值underfined第二个飞回默认
viewer.trackedEntity = undefined;
viewer.scene.camera.flyTo(homeCameraView);
}
}
var freeModeElement = document.getElementById('freeMode');
var droneModeElement = document.getElementById('droneMode');
// Create a follow camera by tracking the drone entity
function setViewMode() {
if (droneModeElement.checked) {
viewer.trackedEntity = drone;
} else {
viewer.trackedEntity = undefined;
viewer.scene.camera.flyTo(homeCameraView);
}
}
freeModeElement.addEventListener('change', setViewMode);
droneModeElement.addEventListener('change', setViewMode);
viewer.trackedEntityChanged.addEventListener(function() {
if (viewer.trackedEntity === drone) {
freeModeElement.checked = false;
droneModeElement.checked = true;
}
});
展现
-我们可以通过entity控制单个的,同样我们也可以控制它周边的。如下一般用不到没有研究
var shadowsElement = document.getElementById('shadows');
var neighborhoodsElement = document.getElementById('neighborhoods');
shadowsElement.addEventListener('change', function (e) {
viewer.shadows = e.target.checked;
});
neighborhoodsElement.addEventListener('change', function (e) {
neighborhoods.show = e.target.checked;
});
// Finally, wait for the initial city to be ready before removing the loading indicator.
var loadingIndicator = document.getElementById('loadingIndicator');
loadingIndicator.style.display = 'block';
city.readyPromise.then(function () {
loadingIndicator.style.display = 'none';
});