Source: Maps.js

/*
 * @Description: In User Settings Edit
 * @Author: xiaoying
 * @Date: 2019-08-28 14:40:14
 * @LastEditTime: 2019-08-31 16:44:36
 * @LastEditors: mayuanye
 */
import { NativeModules } from 'react-native';
let MS = NativeModules.JSMaps;
import Map from './Map.js';

/**
 * @class Maps
 * @description 地图列表类
 */
export default class Maps {
  /**
   * 构造一个新的 Maps 对象
   *
   * @memberof Maps
   * @returns {Promise<Maps>}
   */
  async createObj() {
    try {
      var { MapsId } = await MS.createObj();
      var maps = new Maps();
      maps._MGMapsId = MapsId;
      return maps;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取地图数量
   *
   * @memberof Maps
   * @returns {int} 地图数量
   */
  async getCount() {
    try {
      let count = await MS.getCount(this._MGMapsId);
      return count;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 添加地图
   *
   * @memberof Maps
   * @param {Object} map 地图对象
   * @returns {int} index 添加地图后的索引
   */
  async append(map) {
    try {
      let index = await MS.append(this._MGMapsId, map._MGMapId);
      return index;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 插入地图
   *
   * @memberof Maps
   * @param {int} index 地图索引:
   * @param {Object} map  地图对象
   * @returns {int} 插入后的ID
   */
  async insert(index, map) {
    try {
      let id = await MS.insert(this._MGMapsId, index, map._MGMapId);
      return id;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 移除地图
   *
   * @memberof Maps
   * @param {int} index 地图索引:
   * @returns {boolean} 成功/失败
   */
  async remove(index) {
    try {
      let remove = await MS.remove(this._MGMapsId, index);
      return remove;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 移除所有地图
   *
   * @memberof Maps
   * @returns {boolean} true/false:成功/失败
   */
  async removeAll() {
    try {
      let removeAll = await MS.removeAll(this._MGMapsId);
      return removeAll;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 得到索引
   *
   * @memberof Maps
   * @param {Object} map 地图对象
   * @returns {int} 成功返回地图的索引
   */
  async indexOf(map) {
    try {
      let index = await MS.indexOf(this._MGMapsId, map._MGMapId);
      return index;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 得到指定索引的地图
   *
   * @memberof Maps
   * @param {int} index 地图索引
   * @returns Map 成功返回地图
   */
  async getMap(index) {
    try {
      var { MapId } = await MS.getMap(this._MGMapsId, index);
      var map = null;
      if (MapId != null) {
        map = new Map();
        map._MGMapId = MapId;
      }
      return map;
    } catch (e) {
      console.error(e);
    }
  }
}