在vue上使用cesium开发三维地图-点位弹框
以前端webGIS开发工程师的角度,讲述关于GIS的知识,带大家快速了解下webGIS的知识。

推荐使用NSDT 3DConvert进行3D模型格式转换,支持glb、obj、stp、fbx、ifc等多种3D模型格式之间进行互相转换,在转换过程中,能够很好的保留模型原有的颜色、材质等信息。
点位弹框
点击事件
点位弹框是点击之后才出来了,所以我们现在要做的第一件事,就是搞定cesium的点击事件
ScreenSpaceEventHandler

ScreenSpaceEventType


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

创建弹框
创建弹窗div
创建弹框,两种方式,大家按照各自的实际情况来选择:
- 可以直接在html中创建一个
<div>我是弹框</div>
的标签,然后弹框的内容通过js往里面添加
- 也可以直接通过js的方法
document.createElement('div');
的方法,在js中创建html标签
,进而构造出弹框来
因为我们是vue开发
,组件思维
更适合我们的这个场景,我们就选用第一种方式,在html里面创建一个<div>我是弹框</div>
标签,弹框里面的内容可能根据业务不同,展示的内容页不同,这个内容我们就通过组件的方式引进来,而且这种方式,也避免了在同一个.vue文件中,写大量的代码,避免了后期查看代码的复杂性。

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

css
部分需要设置样式

js
部分



现在弹框创建出来了。
绑定到点击事件
在左键点击监听事件
中调用,在点击事件中通过pick
来判断是否选中点对象
。
点击监听事件的基础上进行了扩展,通过pick判断是否选中对象,选中
后打开弹窗
,展示传入的信息。
使弹窗跟随点移动
不论缩放地图或者移动点,都会造成弹窗的移动的需求,那么就要通过监听来完成弹窗移动的效果。
预渲染preRender

scene
,我的理解,它就是渲染之后的整个canvas
对象,地图一系列的东西都在这个canvas
中。
点转到地球背后弹窗隐藏
因为我当前遇到的业务,基本都是在具体某某某地区地图上,不会让你把地图给缩放成一个地球,然后移动地球干嘛干嘛。不过代码中也实现了,也有注释。
效果如下。

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