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,本文将分享笔者在近期地图图层接入过程中总结的一些经验。
3686 10
|
4月前
|
缓存 前端开发 定位技术
Cesium加载Mapbox自定义地图
Cesium加载Mapbox自定义地图
131 0
|
7月前
|
JavaScript 搜索推荐 定位技术
【百度地图2.5D、3D在Vue项目中的使用】嵌入二维百度地图、三维百度地图、多种显示模式风格样式颜色的百度地图
【百度地图2.5D、3D在Vue项目中的使用】嵌入二维百度地图、三维百度地图、多种显示模式风格样式颜色的百度地图
|
数据可视化 前端开发 搜索推荐
数据可视化大屏百度地图GPS轨迹位置感知状态开发实战案例解析(百度地图jsAPI,包含缩放控件、点线覆盖物、弹窗、标注图标分类功能)
数据可视化大屏百度地图GPS轨迹位置感知状态开发实战案例解析(百度地图jsAPI,包含缩放控件、点线覆盖物、弹窗、标注图标分类功能)
302 0
|
定位技术
百度地图使用 ->展示地图一
百度地图使用 ->展示地图一
104 0
|
前端开发 数据可视化 定位技术
GIS前端-地图标绘与动画
GIS前端-地图标绘与动画
159 0
|
定位技术 API
Cesium开发:常用地图事件
Cesium开发:常用地图事件
357 0
|
定位技术
街道社区网格化信息管理Echarts集成百度地图bmap样式表冲突导致的无法显示地图的解决方案
街道社区网格化信息管理Echarts集成百度地图bmap样式表冲突导致的无法显示地图的解决方案
129 0
|
JSON 数据可视化 定位技术
GIS开发:Maputnik地图样式编辑器
GIS开发:Maputnik地图样式编辑器
795 0
|
前端开发 JavaScript 定位技术
基于OpenLayers实现导航地图上(起/终)点的交互式图标显示
基于OpenLayers实现导航地图上(起/终)点的交互式图标显示
374 0
基于OpenLayers实现导航地图上(起/终)点的交互式图标显示