# Source: ElpTransParam.js

    /**
     * @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);
          }
      }
    }