/**
* @content 区对象功能组件
* @author fjl 2019-6-24 下午2:52:36
*/
import { NativeModules } from 'react-native';
import GraphicMultiPoint from './GraphicMultiPoint';
import Graphic from './Graphic';
import ObjectUtils from './components/ObjectUtils';
let GP = NativeModules.JSGraphicPolygon;
/**
* @class GraphicPolygon
*/
export default class GraphicPolygon extends GraphicMultiPoint {
constructor() {
super();
Object.defineProperty(this, '_MGGraphicPolygonId', {
get: function() {
return this._MGGraphicMultiPointId;
},
set: function(_MGGraphicPolygonId) {
this._MGGraphicMultiPointId = _MGGraphicPolygonId;
},
});
}
/**
* 构造一个新的 GraphicPolygon 对象。
* @memberOf GraphicPolygon
* @returns {Promise.<GraphicPolygon>}
*/
async createObj() {
try {
var { GraphicPolygonId } = await GP.createObj();
var graphicPolygon = new GraphicPolygon();
graphicPolygon._MGGraphicPolygonId = GraphicPolygonId;
return graphicPolygon;
} catch (e) {
console.error(e);
}
}
/**
* 获取面积
* @memberOf GraphicPolygon
* @returns {Promise<Number>}
*/
async getArea() {
try {
if(this.isValid()){
let area = await GP.getArea(this._MGGraphicPolygonId);
return area;
} else {
console.log('GraphicPolygon is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 设置一组坐标点
* @memberOf GraphicPolygon
* @param {Array<Dot>} pointArray 点数组
* @param {Array<Number>} circlesArray 圈序列数组 (int类型的Number)
* @returns {Promise<void>}
*/
async setPoints(pointArray, circlesArray) {
try {
if(this.isValid()){
let pointArrayJson = JSON.stringify(pointArray);
let objArray = [];
let objArrayJson = null;
if(circlesArray !== null && circlesArray.length > 0){
for(let i = 0; i < circlesArray.length; i++){
let obj = {};
obj.c = circlesArray[i];
objArray.push(obj);
}
objArrayJson = JSON.stringify(objArray);
}
await GP.setPoints(this._MGGraphicPolygonId, pointArrayJson, objArrayJson);
} else {
console.log('GraphicPolygon is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 通过点序列设置一组坐标点
* @memberOf GraphicPolygon
* @param {Dots} dots 点序列
* @param {Array<Number>} circlesArray 圈序列数组 (int类型的Number)
* @returns {Promise<void>}
* @example
let dotArr = [];
dotArr.push({x: 114.4, y: 30.4});
dotArr.push({x: 114.44, y: 30.41});
dotArr.push({x: 114.5, y: 30.5});
let dotsModule = new Dots();
let dots = await dotsModule.createObj();
let circles = [1, 2, 3]; // let circles = null;
await dots.fromObjectArray(dotArr);
await this.graphicPolygon.setPointsByDots(dots, null);
*/
async setPointsByDots(dots, circlesArray) {
try {
if(this.isValid() && ObjectUtils.isValidObject(dots) && dots.isValid()){
let objArray = [];
let objArrayJson = null;
if(circlesArray !== null && circlesArray.length > 0){
for(let i = 0; i < circlesArray.length; i++){
let obj = {};
obj.c = circlesArray[i];
objArray.push(obj);
}
objArrayJson = JSON.stringify(objArray);
}
await GP.setPointsByDots(this._MGGraphicPolygonId, dots._MGDotsId, objArrayJson);
} else {
console.log('GraphicPolygon or dots is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 获取圈序列
* @memberOf GraphicPolygon
* @returns {Promise<Array>}
*/
async getCirclesToList() {
try {
if(this.isValid()){
let circlesArray = await GP.getCirclesToList(
this._MGGraphicPolygonId
);
return circlesArray;
} else {
console.log('GraphicPolygon is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 设置边界线的宽度
* @memberOf GraphicPolygon
* @param {Number} width
* @returns {Promise<void>}
*/
async setBorderlineWidth(width) {
try {
if(this.isValid()){
await GP.setBorderlineWidth(this._MGGraphicPolygonId, width);
} else {
console.log('GraphicPolygon is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 获取边界线的宽度
* @memberOf GraphicPolygon
* @returns {Promise<Number>}
*/
async getBorderlineWidth() {
try {
if(this.isValid()){
let borderlineWidth = await GP.getBorderlineWidth(this._MGGraphicPolygonId);
return borderlineWidth;
} else {
console.log('GraphicPolygon is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 获取边界线的颜色
* @memberOf GraphicPolygon
* @returns {Promise<String>} 颜色。eg:'rgba(128, 128, 128, 128)'
*/
async getBorderlineColor() {
try {
if(this.isValid()){
let { borderlineColor } = await GP.getBorderlineColor(
this._MGGraphicPolygonId
);
return borderlineColor;
} else {
console.log('GraphicPolygon is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 设置边界线的颜色
* @memberOf GraphicPolygon
* @param {String} color eg:'rgba(128, 128, 128, 128)'
* @returns {Promise<void>}
*/
async setBorderlineColor(color) {
try {
if(this.isValid()){
await GP.setBorderlineColor(this._MGGraphicPolygonId, color);
} else {
console.log('GraphicPolygon is invalid !');
}
} catch (e) {
console.error(e);
}
}
}