首页 / Cesium / 使用示例
双击定位
双击地球上任意位置,相机带缓动飞过去并保持斜俯视角, 目标点留下一个带坐标的标记。飞行时长可以用滑杆调。
源码与运行效果
先摘掉默认行为
Viewer 内部已经给双击绑定了「选中要素并缩放过去」。不先移除的话, 自己的回调会和默认行为一起执行,表现为相机被拉近两次, 或者飞到的位置和双击点对不上。
移除的入口是 viewer.cesiumWidget.screenSpaceEventHandler,
注意不是自己新建的那个 handler。移除之后再绑到自己的 handler 上。
相机参数怎么配
destination 的高度取 2600 米,是一个街区尺度的视距;
orientation.pitch 取 -42 度,既能看到地面细节又保留一点透视。
maximumHeight: 9000000 让跨洲飞行时相机先抬高到九千公里再落下,
避免长距离飞行贴着地面掠过。
可调参数
| 位置 | 改什么 | 效果 |
|---|---|---|
| 飞行时长滑杆 | 0.5 到 5 秒 | duration 实时生效,下一次双击开始用 |
lat - 0.012 | 去掉偏移 | 相机落在目标正上方,失去斜视效果 |
pitch: -42 | 改成 -78 | 接近正俯视,适合看面状数据 |
maximumHeight | 删掉 | 飞行路径直接连过去,长距离会穿过地面 |
duration | 设 0 | 瞬间跳转,没有缓动 |
双击球体以外的区域没有反应。pickEllipsoid 在射线打不到球体时
返回 undefined,代码里直接 return。想在这种情况下也给出反馈,
应该在面板上提示「双击位置在地球之外」,而不是让功能静默失效。
与 flyTo 的关系
本质就是一次带参数的 flyTo。区别在于视角是从点击位置推出来的,
而不是固定值。做「搜索结果点击定位」时逻辑相同:拿到目标经纬度后
用同一套参数飞过去,把 heading 换成业务需要的朝向即可。