Source: VectorLayer.js

/*
 * @Description: In User Settings Edit
 * @Author: fjl
 * @Date: 2019-09-06 16:27:38
 * @LastEditTime: 2019-09-23 10:26:21
 * @LastEditors: mayuanye
 */
/**
 * @content android视图点对象功能组件
 * @author fjl 2019-6-24 下午2:52:36
 */
import { NativeModules } from 'react-native';
import MapLayer from './MapLayer';
import LinInfo from './LinInfo.js';
import Fields from './Fields.js';
let VL = NativeModules.JSVectorLayer;

/**
 * @class VectorLayer
 */
export default class VectorLayer extends MapLayer {
  constructor() {
    super();
    Object.defineProperty(this, '_MGVectorLayerId', {
      get: function() {
        return this._MGMapLayerId;
      },
      set: function(_MGVectorLayerId) {
        this._MGMapLayerId = _MGVectorLayerId;
      },
    });
  }

  /**
   * 通过int类型的VectorLayreType构造一个新的 VectorLayer 对象。
   * @memberOf VectorLayer
   * @returns {Promise.<VectorLayer>}
   */
  async createObj() {
    try {
      var { VectorLayerId } = await VL.createObj(arguments[0]);
      var graphic = new VectorLayer();
      graphic._MGVectorLayerId = VectorLayerId;
      return graphic;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取符号比
   *
   * @memberOf VectorLayer
   * @returns {Number} 符号比 -- double类型
   *
   */
  async getSymbolScale() {
    try {
      let symbolScale = await VL.getSymbolScale(this._MGVectorLayerId);
      return symbolScale;
    } catch (e) {
      console.error(e);
    }
  }

  // /**
  //  * 设置符号比
  //  *
  //  * @memberOf VectorLayer
  //  * @param {Number} symbolScale 符号比 -- double类型
  //  * @returns {Promise<Void>}
  //  */
  // async setSymbolScale(symbolScale){
  //   try {
  //     await VL.setSymbolScale(this._MGVectorLayerId, symbolScale);
  //   } catch (e) {
  //     console.error(e);
  //   }
  // }

  //  /**
  //   * 获取系统库
  //   *
  //   * @memberOf VectorLayer
  //   * @returns {String} 系统库 -- UUID转换后的String
  //  */
  // async getSystemLib(){
  //   try {
  //     let systemLib = await VL.getSystemLib(this._MGVectorLayerId);
  //     return systemLib;
  //   } catch (e) {
  //     console.error(e);
  //   }
  // }

  // /**
  //  * 设置系统库
  //  *
  //  * @memberOf VectorLayer
  //  * @param {String} lib 系统库 -- UUID转换后的String
  //  * @returns {Promise<Void>}
  //  */
  // async setSystemLib(lib){
  //   try {
  //     await VL.setSystemLib(this._MGVectorLayerId, lib);
  //   } catch (e) {
  //     console.error(e);
  //   }
  // }

  /**
   * 获取是否符号化显示
   * @memberOf VectorLayer
   * @returns {Promise<*>}
   */
  async isSymbolShow() {
    try {
      let isSymbolShow = await VL.isSymbolShow(this._MGVectorLayerId);
      return isSymbolShow;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置符号化显示
   * @memberOf VectorLayer
   * @param symbolShow
   * @returns {Promise<void>}
   */
  async setSymbolShow(symbolShow) {
    try {
      await VL.setSymbolShow(this._MGVectorLayerId, symbolShow);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 是否跟随缩放
   *
   * @memberOf VectorLayer
   * @returns {boolean}
   */
  async isFollowZoom() {
    try {
      let followZoom = await VL.isFollowZoom(this._MGVectorLayerId);
      return followZoom;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置是否跟随缩放
   * @memberOf VectorLayer
   * @param {boolean} followZoom 跟随缩放
   * @returns {Promise<Void>}
   *
   */
  async setFollowZoom(followZoom) {
    try {
      await VL.setFollowZoom(this._MGVectorLayerId, followZoom);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取最小可见图形大小
   * @memberOf VectorLayer
   * @returns {Number} 最小可见图形大小 -- double类型
   */
  async getMinVisibleGeomSize() {
    try {
      let minVisibleGeomSize = await VL.getMinVisibleGeomSize(
        this._MGVectorLayerId
      );
      return minVisibleGeomSize;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置最小可见图形大小
   *
   * @memberOf VectorLayer
   * @param {Number} minVisibleGeomSize 最小可见图形大小 -- double类型
   * @returns {}
   *
   */
  async setMinVisibleGeomSize(minVisibleGeomSize) {
    try {
      await VL.setMinVisibleGeomSize(this._MGVectorLayerId, minVisibleGeomSize);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取透明度
   * @memberOf VectorLayer
   *
   * @return  透明度,0-100 默认为0,表示不透明。
   */
  async getTransparency() {
    try {
      let transparency = await VL.getTransparency(this._MGVectorLayerId);
      return transparency;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置透明度,0-100 默认为0,表示不透明
   * @memberOf VectorLayer
   * @param {Number} transparency 透明度 -- 处于short数值范围的int类型的Number
   * @returns {Promise<void>} 1:成功,0:失败。
   */
  async setTransparency(transparency) {
    try {
      await VL.setTransparency(this._MGVectorLayerId, transparency);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取字段集合
   *
   * @memberOf VectorLayer
   * @returns {Promise<Fields>} 返回Fields对象
   */
  async getFields() {
    try {
      var { FieldsId } = await VL.getFields(this._MGVectorLayerId);
      var fields = null;
      if (FieldsId != null) {
        fields = new Fields();
        fields._MGFieldsId = FieldsId;
      }
      return fields;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置区域边界线图形信息
   *
   * @memberOf VectorLayer
   * @param {LinInfo} linInfo 线图形信息
   * @returns {Promise<Void>}
   */
  async setRegBorderLinInfo(linInfo) {
    try {
      await VL.setRegBorderLinInfo(this._MGVectorLayerId, linInfo._MGLinInfoId);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取区域边界线图形信息
   *
   * @memberOf VectorLayer
   * @returns {Promise<LinInfo>} 成功返回线图形信息
   */
  async getRegBorderLinInfo() {
    try {
      var { LinInfoId } = await VL.getRegBorderLinInfo(this._MGVectorLayerId);
      var linInfo = null;
      if (LinInfoId != null) {
        linInfo = new LinInfo();
        linInfo._MGLinInfoId - LinInfoId;
      }
      return linInfo;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 生成一个UUID字符串
   * @memberOf VectorLayer
   * @returns {String} UUID对应的字符串
   */
  async generateUUID() {
    try {
      let uuid = await VL.generateUUID();
      return uuid;
    } catch (e) {
      console.error(e);
    }
  }
}