Source: GeneralVectorLabel.js

/*
 * @Description: In User Settings Edit
 * @Author: xiaoying
 * @Date: 2019-08-28 17:11:23
 * @LastEditTime: 2019-09-19 14:23:31
 * @LastEditors: mayuanye
 */
import { NativeModules } from 'react-native';
import VectorLabel from './VectorLabel.js';
import LinInfo from './LinInfo.js';
let GVL = NativeModules.JSGeneralVectorLabel;

/**
 * @class GeneralVectorLabel
 * @description 矢量标注
 */
export default class GeneralVectorLabel extends VectorLabel {
  constructor() {
    super();
    Object.defineProperty(this, '_MGGeneralVectorLabelId', {
      get: function() {
        return this._MGVectorLabelId;
      },
      set: function(_MGGeneralVectorLabelId) {
        this._MGVectorLabelId = _MGGeneralVectorLabelId;
      },
    });
  }

  /**
   * 获取标注表达式
   * @memberof GeneralVectorLabel
   * @returns {String} 标注表达式
   */
  async getLabelExpression() {
    try {
      let labelExpression = await GVL.getLabelExpression(
        this._MGGeneralVectorLabelId
      );
      return labelExpression;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置标注表达式
   * @memberof GeneralVectorLabel
   * @param {String} labelExpression 标注表达式
   * @returns {Promise<Void>}
   */
  async setLabelExpression(labelExpression) {
    try {
      await GVL.setLabelExpression(
        this._MGGeneralVectorLabelId,
        labelExpression
      );
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取标注背景类型
   * @memberof GeneralVectorLabel
   * @returns {Number} 标注背景类型(int类型,例如 1--LabelBackType.Rect)
   */
  async getLabelBackType() {
    try {
      let labelBackType = await GVL.getLabelBackType(
        this._MGGeneralVectorLabelId
      );
      return labelBackType;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置标注背景类型
   * @memberof GeneralVectorLabel
   * @param {Number} labelBackType 标注背景类型(int类型,例如 1--LabelBackType.Rect)
   * @returns {Promise<Void>}
   */
  async setLabelBackType(labelBackType) {
    try {
      await GVL.setLabelBackType(this._MGGeneralVectorLabelId, labelBackType);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取背景图形信息,可同时设置点,线,面以及注记
   * @memberof GeneralVectorLabel
   * @returns {Object} geomInfo 背景图形信息
   */
  async getBackGeoInfo() {
    try {
      var { geomInfoId } = await GVL.getBackGeoInfo(
        this._MGGeneralVectorLabelId
      );
      var linInfo = null;
      if (geomInfoId != null) {
        linInfo = new LinInfo();
        linInfo._MGGeomInfoId = geomInfoId;
      }

      return linInfo;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置背景图形信息,可同时设置点,线,面以及注记
   * @memberof GeneralVectorLabel
   * @param {Object} geomInfo 背景图形信息
   * @returns {Promise<Void>}
   */
  async setBackGeoInfo(geomInfo) {
    try {
      await GVL.setBackGeoInfo(
        this._MGGeneralVectorLabelId,
        geomInfo._MGGeomInfoId
      );
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 精度,小数点后有效位数,eg.精度为1时,那么123.456表示为123.5
   * @memberof GeneralVectorLabel
   * @returns {Number} 精度(int范围的Number)
   */
  async getNumericPrecision() {
    try {
      let numericPrecision = await GVL.getNumericPrecision(
        this._MGGeneralVectorLabelId
      );
      return numericPrecision;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置精度
   * @memberof GeneralVectorLabel
   * @param {Number} numericPrecision 精度(int范围的Number)
   * @returns {Promise<Void>}
   */
  async setNumericPrecision(numericPrecision) {
    try {
      await GVL.setNumericPrecision(
        this._MGGeneralVectorLabelId,
        numericPrecision
      );
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 是否换行去标注超过单行字符限制的注记 (线可能支持可能不支持)
   * @memberof GeneralVectorLabel
   * @returns {boolean}
   */
  async getNewLineToLabel() {
    try {
      let newLineToLabel = await GVL.getNewLineToLabel(
        this._MGGeneralVectorLabelId
      );
      return newLineToLabel;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置是否换行去标注超过单行字符限制的注记 (线可能支持可能不支持)
   * @memberof GeneralVectorLabel
   * @param {boolean} newLineToLabel 是否换行去标注超过单行字符限制的注记
   * @returns {Promise<Void>}
   */
  async setNewLineToLabel(newLineToLabel) {
    try {
      await GVL.setNewLineToLabel(this._MGGeneralVectorLabelId, newLineToLabel);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取当行的最大长度
   * @memberof GeneralVectorLabel
   * @returns {Number} 当行的最大长度 (int范围的Number)
   */
  async getMaxLengthPreLine() {
    try {
      let maxLengthPreLine = await GVL.getMaxLengthPreLine(
        this._MGGeneralVectorLabelId
      );
      return maxLengthPreLine;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置当行的最大长度
   * @memberof GeneralVectorLabel
   * @param {Number} maxLengthPreLine (int范围的Number)
   * @returns {Promise<Void>}
   */
  async setMaxLengthPreLine(maxLengthPreLine) {
    try {
      await GVL.setMaxLengthPreLine(
        this._MGGeneralVectorLabelId,
        maxLengthPreLine
      );
    } catch (e) {
      console.error(e);
    }
  }
}