Source: MeasureContentWillChangeListener.js

/**
 * @content 量算结果内容变化监听组件
 * @author xiaoying 2020-01-13 下午3:16:59
 */
import { NativeModules } from 'react-native';
let MCCL = NativeModules.JSMeasureContentWillChangeListener;

/**
 * @class MeasureContentWillChangeListener
 */
export default class MeasureContentWillChangeListener {
    
    /**
     * 创建MeasureContentWillChangeListener
     * 
     * @memberof MeasureContentWillChangeListener
     * @returns {MeasureContentWillChangeListener}
     */
    async createObj(){
        try {
            let measureListenerId = await MCCL.createObj();
            this._MGMeasureListenerId = measureListenerId;
            return this;
        } catch (e) {
            console.error(e);
        }
    }
    /**
     * 设置是否显示测量距离单位
     * 
     * @memberof MeasureContentWillChangeListener
     * @param {Boolean} isShowDistanceUnit 是否显示距离单位
     * @returns {void}
     */
    async setIsShowDistanceUnit(isShowDistanceUnit){
        try {
            await MCCL.setIsShowDistanceUnit(this._MGMeasureListenerId, isShowDistanceUnit);

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

    /**
     * 获取是否显示测量距离单位
     * 
     * @memberof MeasureContentWillChangeListener
     * @returns {Boolean}
     */
    async getIsShowDistanceUnit(){
        try {
            let isShowDistanceUnit = await MCCL.getIsShowDistanceUnit(this._MGMeasureListenerId);
            return isShowDistanceUnit;

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

    /**
     * 设置是否显示测量面积单位
     * 
     * @memberof MeasureContentWillChangeListener
     * @param {Boolean} isShowAreaUnit 是否显示面积单位
     * @returns {void}
     */
    async setIsShowAreaUnit(isShowAreaUnit){
        try {
            await MCCL.setIsShowAreaUnit(this._MGMeasureListenerId, isShowAreaUnit);

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

    /**
     * 获取是否显示测量面积单位
     * 
     * @memberof MeasureContentWillChangeListener
     * @returns {Boolean}
     */
    async getIsShowAreaUnit(){
        try {
            let isShowAreaUnit = await MCCL.getIsShowAreaUnit(this._MGMeasureListenerId);
            return isShowAreaUnit;
        } catch (e) {
            console.error(e);
        }
    }

    /**
     * 设置是否自动改变测量距离单位。若设置自动改变,目前只支持厘米、米、千米三种单位的自动转换
     * 
     * @memberof MeasureContentWillChangeListener
     * @param {Boolean} isAutoChangeDistanceUnit 是否自动改变测量距离单位
     * @returns {void}
     */
    async setIsAutoChangeDistanceUnit(isAutoChangeDistanceUnit){
        try {
            await MCCL.setIsAutoChangeDistanceUnit(this._MGMeasureListenerId, isAutoChangeDistanceUnit);

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

    /**
     * 获取是否自动改变测量距离单位
     * 
     * @memberof MeasureContentWillChangeListener
     * @returns {Boolean}
     */
    async getIsAutoChangeDistanceUnit(){
        try {
            let isAutoChangeDistanceUnit = await MCCL.getIsAutoChangeDistanceUnit(this._MGMeasureListenerId);
            return isAutoChangeDistanceUnit;
        } catch (e) {
            console.error(e);
        }
    }

    /**
     * 设置是否自动改变测量面积单位。若设置自动改变,目前只支持平方厘米、平方米、平方千米三种单位的自动转换
     * 
     * @memberof MeasureContentWillChangeListener
     * @param {Boolean} isAutoChangeAreaUnit 是否自动改变测量面积单位
     * @returns {void}
     */
    async setIsAutoChangeAreaUnit(isAutoChangeAreaUnit){
        try {
            await MCCL.setIsAutoChangeAreaUnit(this._MGMeasureListenerId, isAutoChangeAreaUnit);

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

    /**
     * 获取是否自动改变测量面积单位
     * 
     * @memberof MeasureContentWillChangeListener
     * @returns {Boolean}
     */
    async getIsAutoChangeAreaUnit(){
        try {
            let isAutoChangeAreaUnit = await MCCL.getIsAutoChangeAreaUnit(this._MGMeasureListenerId);
            return isAutoChangeAreaUnit;
        } catch (e) {
            console.error(e);
        }
    }

     /**
     * 设置距离单位及进制(相对于米),可使用SketchMeasureUnitType.DM等
     * 
     * @memberof MeasureContentWillChangeListener
     * @param {String} distanceUnitAndScale 距离单位及进制(相对于米),例:"米*1"、"厘米*100"、"千米*0.001"
     * @returns {void}
     * @example 
    目前SketchMeasureUnitType默认支持以下几种类型
    毫米:SketchMeasureUnitType.MM
    厘米:SketchMeasureUnitType.CM
    分米:SketchMeasureUnitType.DM
    米  :SketchMeasureUnitType.M
    千米:SketchMeasureUnitType.KM
    公里:SketchMeasureUnitType.GongLi
    里  :SketchMeasureUnitType.Li
    海里:SketchMeasureUnitType.Sea_Mile
    英里:SketchMeasureUnitType.Land_Mile
     */
    async setDistanceUnitAndScale(distanceUnitAndScale){
        try {
            await MCCL.setDistanceUnitAndScale(this._MGMeasureListenerId, distanceUnitAndScale);
            
        } catch (e) {
            console.error(e);
        }
    }

    /**
     * 获取距离单位及进制(相对于米)
     * 
     * @memberof MeasureContentWillChangeListener
     * @returns {String}
     */
    async getDistanceUnitAndScale(){
        try {
            let distanceUnitAndScale = await MCCL.getDistanceUnitAndScale(this._MGMeasureListenerId);
            return distanceUnitAndScale;
        } catch (e) {
            console.error(e);
        }
    }

    /**
     * 设置面积单位及进制(相对于平方米),可使用SketchMeasureUnitType.Sqrt_MM
     * 
     * @memberof MeasureContentWillChangeListener
     * @param {String} areaUnitAndScale 面积单位及进制(相对于平方米),例:"平方米*1"、"平方厘米*10000"、"平方千米*0.000001"
     * @returns {void}
     * @example 
    目前SketchMeasureUnitType默认支持以下几种类型
    平方毫米:SketchMeasureUnitType.Sqrt_MM
    平方厘米:SketchMeasureUnitType.Sqrt_CM
    平方分米:SketchMeasureUnitType.Sqrt_DM
    平方米:  SketchMeasureUnitType.Sqrt_M
    平方千米:SketchMeasureUnitType.Sqrt_KM
    平方公里:SketchMeasureUnitType.Sqrt_GongLi
    公顷:    SketchMeasureUnitType.GongQing
    亩:      SketchMeasureUnitType.Mu
    公亩:    SketchMeasureUnitType.GongMu
     */
    async setAreaUnitAndScale(areaUnitAndScale){
        try {
            await MCCL.setAreaUnitAndScale(this._MGMeasureListenerId, areaUnitAndScale);
            
        } catch (e) {
            console.error(e);
        }
    }

    /**
     * 获取距离单位
     * 
     * @memberof MeasureContentWillChangeListener
     * @returns {String}
     */
    async getAreaUnitAndScale(){
        try {
            let areaUnitAndScale = await MCCL.getAreaUnitAndScale(this._MGMeasureListenerId);
            return areaUnitAndScale;
        } catch (e) {
            console.error(e);
        }
    }

}