在vue上使用cesium开发三维地图-点位弹框

以前端webGIS开发工程师的角度,讲述关于GIS的知识,带大家快速了解下webGIS的知识。

在vue上使用cesium开发三维地图-点位弹框
推荐使用NSDT 3DConvert进行3D模型格式转换,支持glb、obj、stp、fbx、ifc等多种3D模型格式之间进行互相转换,在转换过程中,能够很好的保留模型原有的颜色、材质等信息。

点位弹框

点击事件

点位弹框是点击之后才出来了,所以我们现在要做的第一件事,就是搞定cesium的点击事件

ScreenSpaceEventHandler

ScreenSpaceEventType

经纬度获取

弹窗的实现效果是点击某个存在的点模型后在点的右侧打开,原理是通过获取点击点的屏幕坐标,将坐标的yx分别赋值给divtopleft属性。我们现在要先拿到屏幕坐标。

创建弹框

创建弹窗div

创建弹框,两种方式,大家按照各自的实际情况来选择:

  1. 可以直接在html中创建一个<div>我是弹框</div>的标签,然后弹框的内容通过js往里面添加
  2. 也可以直接通过js的方法 document.createElement('div');的方法,在js中创建html标签,进而构造出弹框来

因为我们是vue开发组件思维更适合我们的这个场景,我们就选用第一种方式,在html里面创建一个<div>我是弹框</div>标签,弹框里面的内容可能根据业务不同,展示的内容页不同,这个内容我们就通过组件的方式引进来,而且这种方式,也避免了在同一个.vue文件中,写大量的代码,避免了后期查看代码的复杂性。

如果弹框里面还要加其他的东西,我还可以再接着引入其他的组件,丰富弹框的内容。

html部分需要加上弹框

css部分需要设置样式

js部分

现在弹框创建出来了。

绑定到点击事件

左键点击监听事件中调用,在点击事件中通过pick来判断是否选中点对象

点击监听事件的基础上进行了扩展,通过pick判断是否选中对象,选中打开弹窗,展示传入的信息。

使弹窗跟随点移动

不论缩放地图或者移动点,都会造成弹窗的移动的需求,那么就要通过监听来完成弹窗移动的效果。

预渲染preRender

scene,我的理解,它就是渲染之后的整个canvas对象,地图一系列的东西都在这个canvas中。

点转到地球背后弹窗隐藏

因为我当前遇到的业务,基本都是在具体某某某地区地图上,不会让你把地图给缩放成一个地球,然后移动地球干嘛干嘛。不过代码中也实现了,也有注释。

效果如下。

在vue上使用cesium开发三维地图 - 索引

在vue上使用cesium开发三维地图-常用地图开发框架

在vue上使用cesium开发三维地图-坐标系、webGIS简介

在vue上使用cesium开发三维地图-webgis功能介绍

在vue上使用cesium开发三维地图-地图加载

在vue上使用cesium开发三维地图-地图加载项目学习

在vue上使用cesium开发三维地图-点位加载

在vue上使用cesium开发三维地图-点位弹框

在vue上使用cesium开发三维地图-定位及优化

在vue上使用cesium开发三维地图-点击波纹特效

在vue上使用cesium开发三维地图-波纹特效偏移问题

在vue上使用cesium开发三维地图-点位悬空

在vue上使用cesium开发三维地图-加载三维数据

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号