切换深色模式
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
类已经被正确地导入并且相关配置已经被设置。在实际使用中,您可能需要根据您的具体应用场景调整配置参数。