Skip to content

LonLat 类 API 文档

类描述

LonLat 是一个经纬度转换工具,用于将经纬度坐标转换为相对于原点的本地坐标、墨卡托投影坐标以及世界坐标。

构造函数

javascript
constructor(Config)
  • 参数
    • Config: (可选) 一个配置对象,包含以下属性:
      • ueOriginCoordinates: (可选) 一个数组,定义了原点的经纬度和高度(默认为 [120.22462, 30.23159, 1836])。
      • ueLonMinMax: (可选) 一个数组,定义了经度的最小和最大值(默认为 [72.5874, 135.1388])。
      • ueLatMinMax: (可选) 一个数组,定义了纬度的最小和最大值(默认为 [4.5728, 53.7469])。
      • ueRatio: (可选) 一个数组,定义了经纬度转换比例(默认为 [11.4, 11.4])。
      • ueHightRatio: (可选) 高度转换比例(默认为 172.56)。
      • ueMercatorConstant: (可选) 墨卡托投影常数(默认为 20037508.34)。

方法

GetLocalPosition
javascript
GetLocalPosition(array)
  • 描述: 获取经纬度坐标相对于原点的本地位置。
  • 参数
    • array: 经纬度数组,格式为 [经度, 纬度, 高度],也可以是包含多个这样的数组的数组。
  • 返回值: 返回一个数组,包含转换后的本地坐标。如果输入多个坐标点,则返回一个包含多个本地坐标的数组。
  • 示例:
    javascript
    const LonLat = new LonLat(ueLonLatConfig.Map);
    const localPosition = LonLat.GetLocalPosition([120.225626, 30.232593, 1836]);
lon2world
javascript
lon2world(array)
  • 描述: 将经纬度坐标转换为世界坐标。
  • 参数
    • array: 经纬度数组,格式为 [经度, 纬度, 高度]
  • 返回值: 返回一个数组,包含转换后的世界坐标 [x, y, z]
  • 示例:
    javascript
    const LonLat = new LonLat(ueLonLatConfig.Map);
    const worldPosition = LonLat.lon2world([120.224626, 30.231593, 1836]);
lonlat2Mercator
javascript
lonlat2Mercator(lonLat)
  • 描述: 将经纬度坐标转换为墨卡托投影坐标。
  • 参数
    • lonLat: 经纬度数组,格式为 [经度, 纬度]
  • 返回值: 返回一个数组,包含转换后的墨卡托投影坐标 [x, y]
  • 示例:
    javascript
    const LonLat = new LonLat(ueLonLatConfig.Map);
    const mercatorPosition = LonLat.lonlat2Mercator([120.224626, 30.231593]);
mercator2Lonlat
javascript
mercator2Lonlat(mercator)
  • 描述: 将墨卡托投影坐标转换为经纬度坐标。
  • 参数
    • mercator: 墨卡托投影坐标数组,格式为 [x, y]
  • 返回值: 返回一个数组,包含转换后的经纬度坐标 [经度, 纬度]
  • 示例:
    javascript
    const LonLat = new LonLat(ueLonLatConfig.Map);
    const lonLatPosition = LonLat.mercator2Lonlat([13358338.895192, 3539092.461962]);

使用示例

javascript
const LonLat = require('./Thing.UE/Utilities/LonLat'); // 引入LonLat类

// 全局配置对象,包含不同场景的配置
global.ueLonLatConfig = {
  "Map": {
    ueOriginCoordinates: [120.22462, 30.23159, 1836],
    ueLonMinMax: [72.5874, 135.1388],
    ueRatio: [11.4, 11.4],
    ueHightRatio: 172.56,
    ueMercatorConstant: 20037508.34
  },
  "Campus": {
    ueOriginCoordinates: [120.22462, 30.23159, 1836],
    ueLonMinMax: [72.5874, 135.1388],
    ueRatio: [1.118, 1.1],
    ueHightRatio: 172.56,
    ueMercatorConstant: 17437508.34
  },
  // ... (其他配置对象)
};

// 创建LonLat实例,传入不同的配置以适应不同场景
let LonLatA = new LonLat(ueLonLatConfig.Map);
let LonLatB = new LonLat(ueLonLatConfig.Campus);

// 初始化3D对象变量
let box;
let sphere;

// 监听键盘按键事件
app.on('keydown', function (ev) {
  if (ev.key === 'A') {
    // 使用配置A转换坐标并创建3D对象
    const campusWorldPosition = LonLatA.GetLocalPosition([120.225626, 30.232593, 1836]);
    const originWorldPosition = LonLatA.GetLocalPosition(LonLatA.ueOriginCoordinates);
    if (box) box.destroy();
    box = new THING.Box({
      name: "campus",
      position: campusWorldPosition,
      scale: [10, 10, 10]
    });
    if (sphere) sphere.destroy();
    sphere = new THING.Sphere({
      name: "origin",
      position: originWorldPosition,
      scale: [10, 10, 10]
    });
  } else if (ev.key === 'S') {
    // 使用配置B转换坐标并创建3D对象
    const campusWorldPosition = LonLatB.GetLocalPosition([120.226626, 30.232593, 1836]);
    const originWorldPosition = LonLatB.GetLocalPosition(LonLatB.ueOriginCoordinates);
    if (box) box.destroy();
    box = new THING.Box({
      name: "campus",
      position: campusWorldPosition,
      scale: [10, 10, 10]
    });
    if (sphere) sphere.destroy();
    sphere = new THING.Sphere({
      name: "origin",
      position: originWorldPosition,
      scale: [10, 10, 10]
    });
  } else if (ev.key === 'D') {
    // 销毁创建的3D对象
    if (box && sphere) {
      box.destroy();
      sphere.destroy();
    }
  }
});

请注意,这些示例假设LonLat类已经被正确地导入并且相关配置已经被设置。在实际使用中,您可能需要根据您的具体应用场景调整配置参数。

效果图

效果图

京ICP备13053130号 京公网安备11010502050947号