/**
* @content 虚线线对象功能组件
* @author fjl 2019-6-24 下午2:52:36
*/
import { NativeModules } from 'react-native';
import Graphic from './Graphic';
import Dot from './Dot';
import PointF from './PointF';
import ObjectUtils from './components/ObjectUtils';
let GT = NativeModules.JSGraphicText;
/**
* @class GraphicText
*/
export default class GraphicText extends Graphic {
constructor() {
super();
Object.defineProperty(this, '_MGGraphicTextId', {
get: function() {
return this._MGGraphicId;
},
set: function(_MGGraphicTextId) {
this._MGGraphicId = _MGGraphicTextId;
},
});
}
/**
* 构造一个新的 GraphicText 对象。
* @memberOf GraphicText
* @returns {Promise.<GraphicText>}
*/
async createObj() {
try {
var { GraphicTextId } = await GT.createObj();
var graphicText = new GraphicText();
graphicText._MGGraphicTextId = GraphicTextId;
return graphicText;
} catch (e) {
console.error(e);
}
}
/**
* 设置位置
* @memberOf GraphicText
* @param {Dot} point 定位点相对于文字的位置
* @returns {Promise<void>}
*/
async setPoint(point) {
try {
if(this.isValid() && ObjectUtils.isValidObject(point) && point.isValid()){
await GT.setPoint(this._MGGraphicTextId, point._MGDotId);
} else {
console.log('GraphicText or Dot is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 设置文本
* @memberOf GraphicText
* @param {String} text
* @returns {Promise<void>}
*/
async setText(text) {
try {
if(this.isValid()){
await GT.setText(this._MGGraphicTextId, text);
} else {
console.log('GraphicText is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 设置字体大小
* @memberOf GraphicText
* @param {Number} fontSize 字体大小
* @returns {Promise<void>}
*/
async setFontSize(fontSize) {
try {
if(this.isValid()){
await GT.setFontSize(this._MGGraphicTextId, fontSize);
} else {
console.log('GraphicText is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 设置是否随地图倾斜
* @memberOf GraphicText
* @param {boolean} isSlope
* @returns {Promise<void>}
*/
async setSlope(isSlope) {
try {
if(this.isValid()){
await GT.setSlope(this._MGGraphicTextId, isSlope);
} else {
console.log('GraphicText is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 获取文本的位置
* @memberOf GraphicText
* @returns {Promise<Dot>}
*/
async getPoint() {
try {
if(this.isValid()){
let { point2DId } = await GT.getPoint(this._MGGraphicTextId);
let dot = new Dot();
dot._MGDotId = point2DId;
return dot;
} else {
console.log('GraphicText is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 获取文本
* @memberOf GraphicText
* @returns {Promise<String>}
*/
async getText() {
try {
if(this.isValid()){
let text = await GT.getText(this._MGGraphicTextId);
return text;
} else {
console.log('GraphicText is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 获取字体大小
* @memberOf GraphicText
* @returns {Promise<Number>}
*/
async getFontSize() {
try {
if(this.isValid()){
let fontSize = await GT.getFontSize(this._MGGraphicTextId);
return fontSize;
} else {
console.log('GraphicText is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 获取是否随地图倾斜
* @memberOf GraphicText
* @returns {Promise<Boolean>}
*/
async isSlope() {
try {
if(this.isValid()){
let isSlope = await GT.isSlope(this._MGGraphicTextId);
return isSlope;
} else {
console.log('GraphicText is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 获取文本宽度
* @memberOf GraphicText
* @returns {Promise<Number>}
*/
async getTextWidth() {
try {
if(this.isValid()){
let textWidth = await GT.getTextWidth(this._MGGraphicTextId);
return textWidth;
} else {
console.log('GraphicText is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 获取文本高度
* @memberOf GraphicText
* @returns {Promise<Number>}
*/
async getTextHeight() {
try {
if(this.isValid()){
let textHeight = await GT.getTextHeight(this._MGGraphicTextId);
return textHeight;
} else {
console.log('GraphicText is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 设置锚点
* @memberOf GraphicText
* @param {PointF} anchorPoint 文本锚点的位置:左下角为(0,0),右上角为(1,1)
* @returns {Promise<void>}
*/
async setAnchorPointByPoint(anchorPoint) {
try {
if(this.isValid() && ObjectUtils.isValidObject(anchorPoint) && anchorPoint.isValid()){
await GT.setAnchorPoint(this._MGGraphicTextId, anchorPoint._MGPointFId);
} else {
console.log('GraphicText or anchorPoint is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 获取锚点
* @memberOf GraphicText
* @returns {Promise<PointF>} 文本锚点的位置:左下角为(0,0),右上角为(1,1)
*/
async getAnchorPoint() {
try {
if(this.isValid()){
let { PointFID } = await GT.getAnchorPoint(this._MGGraphicTextId);
let pointF = new PointF();
pointF._MGPointFId = PointFID;
return pointF;
} else {
console.log('GraphicText is invalid !');
}
} catch (e) {
console.error(e);
}
}
/**
* 设置锚点
* @memberOf GraphicText
* @param {Number} referenceWidth 参考宽度
* @param {Number} referenceHeight 参考高度
* @param {Number} referenceInterval 参考间隔
* @param {PointF} anchorPoint 文本锚点的位置:左下角为(0,0),右上角为(1,1)
* @returns {Promise<void>}
*/
async setReferenceInfo(
referenceWidth,
referenceHeight,
referenceInterval,
anchorPoint
) {
try {
if(this.isValid() && ObjectUtils.isValidObject(anchorPoint) && anchorPoint.isValid()){
await GT.setReferenceInfo(
this._MGGraphicTextId,
referenceWidth,
referenceHeight,
referenceInterval,
anchorPoint._MGPointFId
);
} else {
console.log('GraphicText or anchorPoint is invalid !');
}
} catch (e) {
console.error(e);
}
}
}