Cesium开发:限制地图浏览范围

简介: Cesium开发:限制地图浏览范围

在二维地图的开发中,有maxbounds属性或者maxextent属性,能够将地图的浏览限制在一定的四至坐标范围中观看。
对比于二维地图里,三维地图多出来高度、旋转、观看角度等参数,在控制的时候,要比二维地图多控制一些东西。
Cesium中有设置观看最低、最高高度的API,能够在观看高度上进行控制,下边代码即是:

viewer.scene.screenSpaceCameraController.maximumZoomDistance =100000; 

 viewer.scene.screenSpaceCameraController.minimumZoomDistance = 10;

设置四至范围的API并没有找到,需要根据现有API进行进一步的开发。
思路是将浏览的范围控制在事先设定好的四至范围中,实时进行检测,超出范围后,让镜头退回到设定的范围中。
实时监测的函数,使用的是preRender,此事件执行的频率还是很高的:

viewer.scene.preRender.addEventListener(function() {
    //函数内容});

Cesium的镜头视野范围,开始时用的是computeViewRectangle,计算一个观看的视野范围,计算的结果是west,east,north,south4个范围参数;
let _viewRectangle = viewer.camera.computeViewRectangle();

再拿上述4个范围参数和设定的四至范围进行比对,超出范围的部分,使用设定的四至范围,最后,将camera的观看范围,强制跳回到观看视野中,防止超出。
不过,在这样的计算情况下,场景有一定的跳动,效果不太理想,后来,就把设定的四至范围扩大了一些,判断viewer.camera.position,将观看的坐标限定在四至的坐标中,超出范围的部分,使用设定的四至范围坐标,也是进行强制跳回,这样尽管在观看的范围有一定的误差,但是,整体的效果还是好了些。

相关文章
|
定位技术 API 网络架构
地图图层接入:从mapbox转向cesium
由于地图坐标系的不统一,地图图商提供的图层服务也各有特色,在图层对接的开发过程中常会遇到许多坑,从二维图层到三维图层,地图引擎mapbox再到cesium,本文将分享笔者在近期地图图层接入过程中总结的一些经验。
3654 10
|
2月前
Cesium制作鹰眼效果
这篇文章介绍了如何在Cesium中实现鹰眼(概览)功能,让用户可以从高空视角俯瞰整个三维地理场景。
47 1
Cesium制作鹰眼效果
|
7月前
|
JavaScript 搜索推荐 定位技术
【百度地图2.5D、3D在Vue项目中的使用】嵌入二维百度地图、三维百度地图、多种显示模式风格样式颜色的百度地图
【百度地图2.5D、3D在Vue项目中的使用】嵌入二维百度地图、三维百度地图、多种显示模式风格样式颜色的百度地图
|
7月前
|
JavaScript 前端开发 定位技术
uniapp中地图制作
uniapp中地图制作
79 0
|
前端开发 数据可视化 定位技术
GIS前端-地图标绘与动画
GIS前端-地图标绘与动画
154 0
|
定位技术 API
Cesium开发:常用地图事件
Cesium开发:常用地图事件
350 0
|
定位技术
街道社区网格化信息管理Echarts集成百度地图bmap样式表冲突导致的无法显示地图的解决方案
街道社区网格化信息管理Echarts集成百度地图bmap样式表冲突导致的无法显示地图的解决方案
128 0
|
编解码 定位技术 数据处理
【从零开始学GIS再到精通GIS】专题图制作-地图渲染-地图整饰
【从零开始学GIS再到精通GIS】专题图制作-地图渲染-地图整饰
【从零开始学GIS再到精通GIS】专题图制作-地图渲染-地图整饰
|
前端开发 JavaScript 定位技术
基于OpenLayers实现导航地图上(起/终)点的交互式图标显示
基于OpenLayers实现导航地图上(起/终)点的交互式图标显示
371 0
基于OpenLayers实现导航地图上(起/终)点的交互式图标显示
|
定位技术 API
Leaflet中如何限制地图的拖动范围
本文讲解了在Leaflet中如何进行地图范围的控制,并通过代码的方式进行示例,并展示了最终效果。
736 0
Leaflet中如何限制地图的拖动范围