3. Cesium设置初始化视图

好久没用Cesium了,设置初始化位置的都忘了。重新捡起来把之前会的东西都整理一下。

设定初始化试图的方式有两种 1)使用camera提供的方法setView(),flyTo(),2)修改Cesium默认显示范围DEFAULT_VIEW_RECTANGLE

1. 使用Carema类提供的方法

使用Camera提供的方案很容易理解,就是定位的概念。给定初始化的位置坐标与高度信息,然后调用用 careme 方法的实现试图切换。

flyto() 与setView 都能实现,两者确保如下

  • flyTo有飞行动画效果,从初始试图到目标视图有一定的时间,并且可以通过修改 duration 参数来控制飞行动画的时长。如果地图资源加载比较耗时,可以通过这个方法争取到一定的缓冲时间。
  • setView 就没有过渡动画,直接就将显示目标视图,如果是本地资源那很合适可以快速渲染,如果地图资源加载需要时间可能需要根据情况来采用
ts 复制代码
 const viewer = new Viewer("csm-viewer-container", {
        animation: false,
        timeline: false,
        geocoder: false,
        fullscreenButton: false,
        sceneModePicker: false,
        navigationHelpButton: false,
        homeButton: false,
        baseLayerPicker: false,
        navigationInstructionsInitiallyVisible: false,
        creditContainer: "cesium-credit"
      })
      
csmViewerRef.current = viewer
const destination = Cartesian3.fromDegrees(114.180807, 22.295909, 10000) 
viewer.camera.flyTo({ destination: destination})
viewer.camera.setView({ destination: destination})

2. 修改Cesium默认显示范围

修改Cesium默认显示范围方法也很简单,只需要修改Cesium的默认参数DEFAULT_VIEW_RECTANGLE,这个参数是一个矩形对象,可以通过Rectangle.fromDegrees(lon1,lat1,lon2,lat2) 类方法创建矩形,参数就是矩形范围的左上角端点坐标与右下角端点坐标

ts 复制代码
Camera.DEFAULT_VIEW_RECTANGLE = Rectangle.fromDegrees(113.802555, 22.460383, 114.491389, 22.180264)
Camera.DEFAULT_VIEW_FACTOR = 0

useEffect(() => {
    if (viewerContainerRef.current && !csmViewerRef.current) {
      const viewer = new Viewer("csm-viewer-container", {
        animation: false,
        timeline: false,
        geocoder: false,
        fullscreenButton: false,
        sceneModePicker: false,
        navigationHelpButton: false,
        homeButton: false,
        baseLayerPicker: false,
        navigationInstructionsInitiallyVisible: false,
        creditContainer: "cesium-credit"
      })
      csmViewerRef.current = viewer
    }
  }, [viewerContainerRef])

DEFAULT_VIEW_FACTOR 这个参数可以调整视图离矩形范围的远近。 使用默认参数的方式需要注意,当存在多个Viewer实例时,其他视图也会默认使用修改后的Cesium的默认的视图范围。如果不想其他实例受影响,也想达到相同的效果那么就选择 camera.setView()

相关推荐
大数据追光猿1 分钟前
Python中的Flask深入认知&搭建前端页面?
前端·css·python·前端框架·flask·html5
莫忘初心丶3 分钟前
python flask 使用教程 快速搭建一个 Web 应用
前端·python·flask
横冲直撞de35 分钟前
前端接收后端19位数字参数,精度丢失的问题
前端
我是哈哈hh36 分钟前
【JavaScript进阶】作用域&解构&箭头函数
开发语言·前端·javascript·html
摸鱼大侠想挣钱37 分钟前
ActiveX控件
前端
谢尔登38 分钟前
Vue 和 React 响应式的区别
前端·vue.js·react.js
酷酷的阿云39 分钟前
Vue3性能优化必杀技:useDebounce+useThrottle+useLazyLoad深度剖析
前端·javascript·vue.js
神明木佑40 分钟前
HTML 新手易犯的标签属性设置错误
前端·css·html
老友@42 分钟前
OnlyOffice:前端编辑器与后端API实现高效办公
前端·后端·websocket·编辑器·onlyoffice
bin91531 小时前
DeepSeek 助力 Vue 开发:打造丝滑的缩略图列表(Thumbnail List)
前端·javascript·vue.js·ecmascript·deepseek