1.点击选中。
2.scenc中的太阳和月亮。
3.模型部分部位换颜色
4.webgl广告牌让图标,不随地图放大一起变化
5.点击获取模型
6.点击模型,点击处弹出位置显示信息
7.取消选择框,实体画面时,选中面,选中框会飘。
8.用了camera.lookat后,把相机的模式切换回来
1.点击选中。
var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
//设置鼠标左键单击回调事件
handler.setInputAction(function (e) {
var s3mlayerPick = getSelection();
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
//返回选中对象
var getSelection = function() {
var layers = scene.layers._layers.values;
var layerCount = layers.length;
if(layerCount > 0) {
for(var i = 0; i < layerCount; i++) {
var ids = layers[i].getSelection();
console.log(ids)
if(ids[0] !== undefined) {
var Selection3D = {};
Selection3D["layer"] = layers[i];
Selection3D["ID"] = ids[0];
return Selection3D;
}
}
return undefined;
} else {
return undefined;
}
};
2.scenc中的太阳和月亮。
scene.moon.show = false;
3.模型部分部位换颜色
var ids = new Cesium.AssociativeArray();
ids.set(viewer.selectedEntity.id, Cesium.Color.RED);
console.log(ids);
layer2 = viewer.scene.layers.getSelectedLayer();
layer2.updateObjsColor(ids);
update只是更新当前的渲染效果,再次刷新后就没了,建议用set吧
4.webgl广告牌让图标,不随地图放大一起变化
entity billboard
5.点击获取模型:
var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
//设置鼠标左键单击回调事件
handler.setInputAction(function (e) {
var s3mlayerPick = getSelection();
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
//返回选中对象
var getSelection = function() {
var layers = scene.layers._layers.values;
var layerCount = layers.length;
if(layerCount > 0) {
for(var i = 0; i < layerCount; i++) {
var ids = layers[i].getSelection();
console.log(ids)
if(ids[0] !== undefined) {
var Selection3D = {};
Selection3D["layer"] = layers[i];
Selection3D["ID"] = ids[0];
return Selection3D;
}
}
return undefined;
} else {
return undefined;
}
};
点击后去遍历所有图层,拿到点击的模型id和所在的图层,(判断图层和id是不是想要的模型)在去做sql查询,拿到属性信息。
6.点击模型,点击处弹出位置显示信息
var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
//设置鼠标左键单击回调事件
handler.setInputAction(function (e) {
//首先移除之前添加的点
viewer.entities.removeAll();
//获取点击位置笛卡尔坐标
var position = scene.pickPosition(e.position);
//将笛卡尔坐标转化为经纬度坐标
var cartographic = Cesium.Cartographic.fromCartesian(position);
var longitude = Cesium.Math.toDegrees(cartographic.longitude);
var latitude = Cesium.Math.toDegrees(cartographic.latitude);
var height = cartographic.height;
if (height < 0) {
height = 0;
}
//创建弹出框信息
var entity = new Cesium.Entity({
name: "位置信息",
description: createDescription(Cesium, [longitude, latitude, height])
});
viewer.selectedEntity = entity;
//在点击位置添加对应点
viewer.entities.add(new Cesium.Entity({
point: new Cesium.PointGraphics({
color: new Cesium.Color(1, 1, 0),
pixelSize: 10,
outlineColor: new Cesium.Color(0, 1, 1)
}),
position: Cesium.Cartesian3.fromDegrees(longitude, latitude, height + 0.5)
}));
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
7.取消选择框,实体画面时,选中面,选中框会飘。
viewer.selectionIndicator = false
8.用了camera.lookat后,怎么把相机的模式切换回来
viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)