Skip to content

三维工具

获取鼠标当前位置 - getCurrentMousePosition

getCurrentMousePosition()

示例:

js
let position = globalEarth.Tool.getCurrentMousePosition();
console.log(position);

获取相机当前姿态数据 - getCameraView

getCameraView(viewer)

viewer

说明:地球(globalEarth.viewer)

示例:

js
let obj = globalEarth.Tool.getCameraView(viewer);

获取两点的中心点 - getMidPosition

getMidPosition(t , e)

t,e

说明:笛卡尔坐标

示例:

js
let t = {
  x: -2708302.177344939,
  y: 4701901.5325118145,
  z: 3341051.060163092,
};
let e = {
  x: -2708293.1458729664,
  y: 4701914.060276213,
  z: 3341042.4133265074,
};
let mid = globalEarth.Tool.getMidPosition(t, e);

笛卡尔转经纬度 - CartesiansToLngLats

CartesiansToLngLats(position,flag)

position

说明:笛卡尔坐标

flag

说明:true 返回一维数组、false 返回二维数组

示例:

js
let position = [
  {
    x: -2708302.177344939,
    y: 4701901.5325118145,
    z: 3341051.060163092,
  },
  {
    x: -2708292.4916460603,
    y: 4701903.831459629,
    z: 3341055.6808458273,
  },
  {
    x: -2708287.995879581,
    y: 4701913.430771285,
    z: 3341045.845717428,
  },
  {
    x: -2708293.1458729664,
    y: 4701914.060276213,
    z: 3341042.4133265074,
  },
];
// 一维数组
let point1 = globalEarth.Tool.CartesiansToLngLats(position, true);
// 二维数组
let point2 = globalEarth.Tool.CartesiansToLngLats(position, false);

经纬度转笛卡尔 - LngLatsToCartesians

LngLatsToCartesians(position)

position

说明:经纬度坐标

示例:

js
let position = [
  [119.942006, 31.794135, 0],
  [119.941905, 31.794184, 0],
  [119.941813, 31.79408, 0],
  [119.941857, 31.794039, 0.8],
];
let point = globalEarth.Tool.LngLatsToCartesians(position);

点选对象(三维信息查询、模型高亮) - SelectObject

SelectObject()

  • 开启

    SelectObj()

  • 关闭

    stop()

示例:

js
// 开启
globalEarth.SelectObject.selectObj((obj, point) => {
  console.log(obj); //信息
  console.log(point); //坐标点
});
// 关闭
globalEarth.SelectObject.stop();

点选图层(二维信息查询) - getPickInfo

适用于二维信息查询

getPickInfo(position,viewer)

position - 笛卡尔坐标

viewer - 地球 GlobalEarth.viewer

示例:

js
let config = {
  position: {
    x: -2708302.22022029,
    y: 4701901.5339981755,
    z: 3341051.059691208,
  },
};
let info = globalEarth.Tool.getPickInfo(viewer, config);

信息弹窗 - imgPopup

可用于自定义信息弹窗、适用于二三维

imgPopup(config)

titlew - 弹窗标题

position - 笛卡尔坐标

viewer - 地球 GlobalEarth.viewer

imgurl - 弹窗背景图片路径

contenttext - 弹窗内容(1.json 对象、2.dom 元素)

uuid - 同时显示多个弹窗,id 不可重复

appID - 加载地球 dom 元素的 id

line - 角标位置(left、center、right)

示例:

js
let config = {
  titlew: "信息弹窗",
  contenttext: [
    {
      序号: "01",
      姓名: "王五",
      文本内容: "信息弹窗",
      时间: "2023-12-22  08:36:10",
    },
  ],
  //"contenttext": ' <div class="text_cont"><div class="name">'+"姓名:外网"+'</div><div class="value">'+"姓名:外网"+'</div><img src="../assets/tk-1.png" /></div>',
  //"domclass": "",(不用传)
  uuid: "info",
  appID: "cesiumContainer",
  line: "left",
};
//加载弹窗
let popup = globalEarth.imgPopup.creatPopup(viewer, config, position, imgurl);
//控制显隐
popup.ShowOrHide(uuid, true / false);
//销毁
popup.destory();

普通弹窗 - PopWindow

PopWindow(data,position,htmlstr,width,height)

data - json 内容

position - 笛卡尔坐标

htmlstr - html 片段

width - 弹窗宽度

height - 弹窗高度

示例:

js
let position: {
  x: -2708302.22022029,
  y: 4701901.5339981755,
  z: 3341051.059691208,
};
let htmlstr = ' <div class="text_cont">XXXXXXXXXXX</div>';
globalEarth.PopWindow.popShowHtml(htmlstr, position, 160, 80);
globalEarth.PopWindow.popShow(data, position, 160, 80);
//隐藏
globalEarth.PopWindow.popHide();

材质 - createMaterial

createMaterial(config)

config -

type - 创建类型(颜色:Color、水面:Water、图片:Image)

color - 颜色

imgurl - 图片路径

IsAlpha - 图片是都透明(true、false)

frequency - 水面波动频率(1000)

animationSpeed - 动画速度(0.02)

amplitude - 水面振幅(5.0)

specularIntensity - 镜面反射强度(5.0)

repeatX - 横向重复个数(1)

repeatY - 纵向重复个数(1)

示例:

js
let config: {
  type: "", //type为空默认为颜色
  color: "",
  imgurl: "",
  IsAlpha: false,
  frequency: 1000.0,
  animationSpeed: 0.02,
  amplitude: 5.0,
  specularIntensity: 5.0,
  repeatX: 1,
  repeatY: 1,
};
let material = globalEarth.Tool.createMaterial(config);

钳击箭头 - CartesiansToPincerArrowPoints

CartesiansToPincerArrowPoints(points)

points - 笛卡尔坐标数组

示例:

js
let points: [
  {
    x: -2709971.050469433,
    y: 4702214.8386326255,
    z: 3339281.594229358,
  },
  {
    x: -2710634.810332343,
    y: 4701956.339871428,
    z: 3339108.1071455413,
  },
  {
    x: -2710639.5666858885,
    y: 4702226.428410219,
    z: 3338726.6287194276,
  },
  {
    x: -2709998.274988554,
    y: 4702595.197878873,
    z: 3338727.8193600583,
  },
  {
    x: -2710217.5236139405,
    y: 4702130.63798729,
    z: 3339200.7238147114,
  }
];
let positions = globalEarth.Tool.CartesiansToPincerArrowPoints(points);

阵型坐标 - CartesiansToFormationPoints

CartesiansToFormationPoints(points,type)

points - 笛卡尔坐标数组

type - 0:防御、1:进攻

示例:

js
let points: [
  {
    x: -2709971.050469433,
    y: 4702214.8386326255,
    z: 3339281.594229358,
  },
  {
    x: -2710634.810332343,
    y: 4701956.339871428,
    z: 3339108.1071455413,
  },
  {
    x: -2710639.5666858885,
    y: 4702226.428410219,
    z: 3338726.6287194276,
  },
  {
    x: -2709998.274988554,
    y: 4702595.197878873,
    z: 3338727.8193600583,
  },
  {
    x: -2710217.5236139405,
    y: 4702130.63798729,
    z: 3339200.7238147114,
  }
];
let positions = globalEarth.Tool.CartesiansToFormationPoints(points);

进攻箭头坐标 - CartesiansToAttackArrowPoints

CartesiansToAttackArrowPoints(points)

points - 笛卡尔坐标数组

示例:

js
let points: [
  {
    x: -2709971.050469433,
    y: 4702214.8386326255,
    z: 3339281.594229358,
  },
  {
    x: -2710634.810332343,
    y: 4701956.339871428,
    z: 3339108.1071455413,
  },
  {
    x: -2710639.5666858885,
    y: 4702226.428410219,
    z: 3338726.6287194276,
  },
  {
    x: -2709998.274988554,
    y: 4702595.197878873,
    z: 3338727.8193600583,
  },
  {
    x: -2710217.5236139405,
    y: 4702130.63798729,
    z: 3339200.7238147114,
  }
];
let positions = globalEarth.Tool.CartesiansToAttackArrowPoints(points);

事件监听器

事件名称 描述

LEFT_DOWN 表示鼠标左键按下事件。

LEFT_UP 表示鼠标左键弹起事件。

LEFT_CLICK 表示鼠标左键点击事件。

LEFT_DOUBLE_CLICK 表示鼠标左键双击事件。

RIGHT_DOWN 表示鼠标右键按下事件。

RIGHT_UP 表示鼠标右键弹起事件。

RIGHT_CLICK 表示鼠标右键单击事件。

MIDDLE_DOWN 表示鼠标中键按下事件。

MIDDLE_UP 表示鼠标中键弹起事件。

MIDDLE_CLICK 表示鼠标中键点击事件。

MOUSE_MOVE 表示鼠标移动事件。

WHEEL 表示鼠标滚轮滚动事件。

PINCH_START 表示触控屏上双指开始事件。

PINCH_END 表示触控屏上双指结束事件。

PINCH_MOVE 表示触控屏上双指移动事件。

添加事件监听器

js
var eventHandler = null;
function addEventListenerClick() {
      // 创建事件处理器
      eventHandler = new Cesium.ScreenSpaceEventHandler(
        globalEarth.viewer.canvas
      );
      // 监听左键点击事件
      eventHandler.setInputAction(function (event) {
        console.log(event);
        // 获取点击的 Cartesian3 坐标(世界坐标)
        const cartesian = globalEarth.viewer.camera.pickEllipsoid(
          event.position,
          globalEarth.viewer.scene.globe.ellipsoid
        );
        if (cartesian) {
          // 转换为经纬度
          const cartographic = Cesium.Cartographic.fromCartesian(cartesian);
          const lng = Cesium.Math.toDegrees(cartographic.longitude);
          const lat = Cesium.Math.toDegrees(cartographic.latitude);

          console.log("点击位置:", { lng, lat });
        }
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
    },

移除事件监听器

js
// 移除事件监听器
eventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
  // 销毁整个事件处理器(释放内存)
  eventHandler.destroy();
},