vuejs+cesium绘制点以及给点添加点击事件

1、绘制一个点

  this.viewer.entities.add({
               id:‘设置点的id’,
               position : new Cesium.Cartesian3.fromDegrees(经度, 纬度, 高度),
               point : {
                    pixelSize : 15,//点的大小
                    color: Cesium.Color.RED,//点的颜色
                    outlineWidth:2,//边框宽度
                    outlineColor: Cesium.Color.WHITE.withAlpha(0.4),//边框颜色
              }
        })
2、将绘制的点更改为一个图片
        this.viewer.entities.add({
               id:‘设置点的id’,
               position : new Cesium.Cartesian3.fromDegrees(经度, 纬度, 高度),
        billboard:{
                  // 图像地址,URI或Canvas的属性
                  image: require('../../../assets/image/header/position.png'),
                  // 设置颜色和透明度
                  color: Cesium.Color.WHITE.withAlpha(0.8),
                  // 高度(以像素为单位)
                  height: 36,
                  // 宽度(以像素为单位)
                  width: 36,
                  // 逆时针旋转
                  rotation: 0,
                  // 大小是否以米为单位
                  sizeInMeters: false,
                  // 相对于坐标的垂直位置
                  verticalOrigin: Cesium.VerticalOrigin.CENTER,
                  // 相对于坐标的水平位置
                  horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
                  // 该属性指定标签在屏幕空间中距此标签原点的像素偏移量
                  pixelOffset: new Cesium.Cartesian2(10, 0),
                  // 应用于图像的统一比例。比例大于会1.0放大标签,而比例小于会1.0缩小标签。
                  scale: 1.0,
                  // 是否显示
                  show: true
             }
      })
3、绘制多个点且闪烁的
     let x = 1;
     let flog = true;
        item.data.map((list,index)=>{
              that.viewer.entities.add({
                id:`area${index}`,
         infoId:list.infoId,
                position : new Cesium.Cartesian3.fromDegrees(list.lng, list.lat, list.alt),
                point : {
                    pixelSize : 15,
                    color: new Cesium.CallbackProperty(function () {
                      if(flog){
                        x = x - 0.01;
                        if(x<=0){
                          flog = false;
                        }
                      }else{
                        x = x + 0.01;
                        if(x>=1){
                          flog = true;
                        }
                      }
                      return Cesium.Color.RED.withAlpha(x);
                    },false),
                    outlineWidth:2,
                    outlineColor: Cesium.Color.WHITE.withAlpha(0.4),
                }
            })
          })
   this.handlePointClick();//添加点的点击事件
4、给点添加点击事件
  handlePointClick(){
    let that = this;
    let handler = new Cesium.ScreenSpaceEventHandler(that.viewer.scene.canvas);
         handler.setInputAction(function (click) {
           let pick = that.viewer.scene.pick(click.position)
              if (pick && pick.id) {
               that.viewer.entities.values.map((item)=>{
                  if(pick.id.id && (item.id == pick.id.id)){
                      that.viewer._selectedEntity = [];//去除左击之后出现选中的绿框
                      if(item.infoId){
                          点击点之后的操作
                      }
                  }
               })
            }
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
             this.viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);//去除双击放大地图效果
    }
5、删除地图上绘制的所有的点
      this.viewer.entities.removeAll();
6、删除地图上绘制的某一个点(通过id)
      let getByIdBoxs = this.viewer.entities.getById('设置的id名称');
      this.viewer.entities.remove(getByIdBoxs);
7、cesium的属性访问地址:http://cesium.xin/cesium/cn/Documentation1.72/PolygonGraphics.html
8、基础用法笔记来源:https://blog.csdn.net/lyxkgc/article/details/124796138
9、详细vuejs+cesium的使用:https://www.cnblogs.com/wangyan0926/p/16453982.html


posted @ 2023-02-16 11:13  我爱敲代码0000  阅读(3109)  评论(0编辑  收藏  举报