/**
* @content 椭球坐标系变换参数功能组件
* @author lidafeng
*/
import { NativeModules } from 'react-native';
let ETP = NativeModules.JSElpTransParam;
/**
* @class ElpTransParam
* @description 椭球坐标系变换参数
*/
export default class ElpTransParam {
/**
* 构造一个新的 ElpTransParam 对象。
* @memberOf ElpTransParam
* @returns {Promise.<ElpTransParam>}
*/
async createObj() {
try {
let { ElpTransParamId } = await ETP.createObj();
let elpTransParam = new ElpTransParam();
elpTransParam._MGElpTransParamId = ElpTransParamId;
return elpTransParam;
} catch (e) {
console.error(e);
}
}
/**
* 通过成员变量的名称设置值 <br>
* 成员变量的名称 --- 注释: <br>
* 'name' --- 转换名称,String <br>
* 'inCord' --- 源坐标系椭球体编号(从1开始),int <br>
* 'inUnit' --- 输入数据单位,int <br>
* 'outCord' --- 目的坐标系椭球体编号(从1开始),int <br>
* 'outUnit' --- 输出数据单位,int <br>
* 'type' --- 转换类型(0/1:三参数直角平移/七参数),int <br>
* 'dx' --- (三参数/七参数)x方向的平移值(单位:m),double <br>
* 'dy' --- (三参数/七参数)y方向的平移值(单位:m),double <br>
* 'dz' --- (三参数/七参数)z方向的平移值(单位:m),double <br>
* 'wx' --- (七参数)绕x轴的旋转角(单位:弧度),double <br>
* 'wy' --- (七参数)绕y轴的旋转角(单位:弧度),double <br>
* 'wz' --- (七参数)绕z轴的旋转角(单位:弧度),double <br>
* 'dm' --- 七参数尺度比例因子,double <br>
*
* @memberOf ElpTransParam
* @param {String} key 成员变量的名称
* @param {String| Number} value 成员变量的值
* @returns {Promise.<void>}
* @example
let elpTransParam = new ElpTransParam();
let elpTransParamObj = await elpTransParam.createObj();
await elpTransParamObj.set('name', '王五');
await elpTransParamObj.set('inCord', 1);
await elpTransParamObj.set('dx', 12.9);
*/
async set(key, value){
try {
let obj = {[key]: value};
await ETP.set(this._MGElpTransParamId, key, obj);
} catch (e) {
console.error(e);
}
}
/**
* 通过成员变量的名称获取值 <br>
* 成员变量的名称包括: <br>
* 'name' --- 转换名称 <br>
* 'inCord' --- 源坐标系椭球体编号(从1开始) <br>
* 'inUnit' --- 输入数据单位 <br>
* 'outCord' --- 目的坐标系椭球体编号(从1开始) <br>
* 'outUnit' --- 输出数据单位 <br>
* 'type' --- 转换类型(0/1:三参数直角平移/七参数)<br>
* 'dx' --- (三参数/七参数)x方向的平移值(单位:m) <br>
* 'dy' --- (三参数/七参数)y方向的平移值(单位:m) <br>
* 'dz' --- (三参数/七参数)z方向的平移值(单位:m)<br>
* 'wx' --- (七参数)绕x轴的旋转角(单位:弧度)<br>
* 'wy' --- (七参数)绕y轴的旋转角(单位:弧度) <br>
* 'wz' --- (七参数)绕z轴的旋转角(单位:弧度) <br>
* 'dm' --- 七参数尺度比例因子 <br>
*
* @memberOf ElpTransParam
* @param {String} key 成员变量的名称
* @returns {String|Number} 成员变量值
*/
async get(key){
try {
let {value} = await ETP.get(this._MGElpTransParamId, key);
return value;
} catch (e) {
console.error(e);
}
}
/**
* 获取所有的成员变量名称和值
* @memberOf ElpTransParam
* @returns {String} json字符串
*/
async toString(){
try {
let variable = await ETP.toString(this._MGElpTransParamId);
return variable;
} catch (e) {
console.error(e);
}
}
/**
* 设置所有成员变量值,字符串中的键请与示例的键保持一致
*
* @memberOf ElpTransParam
* @param {String} stringValue 键值对形式的字符串
* @returns {Promise.<Void>}
* @example
// 设置全部变量
let obj = {name: '张三', inCord: 1, inUnit: 5, outCord: 1, outUnit: 7, type: 0,
dx: 8.0, dy: 9.0, dz: 10.0, wx: 11.0, wy: 12.0, wz: 1.2, dm: 1.0 };
// JSON对象设置全部变量
// let obj = {"name": "李四", "inCord": 1, "inUnit": 5, "outCord": 1, "outUnit": 7, "type": 0,
// "dx": 8.0, "dy": 9.0, "dz": 10.0, "wx": 11.0, "wy": 12.0, "wz": 1.2, "dm": 1.0 };
// 将对象转换成字符串
let stringValue = JSON.stringify(obj);
let elpTransParam = new ElpTransParam();
let elpTransParamObj = await elpTransParam.createObj();
await elpTransParamObj.fromString(stringValue);
*/
async fromString(stringValue){
try {
if(stringValue === undefined || stringValue === null || stringValue.length === 0){
return;
}
let objValue = JSON.parse(stringValue);
await ETP.fromString(this._MGElpTransParamId, objValue);
} catch (e) {
console.error(e);
}
}
}