UNPKG

imobile_for_reactnative

Version:

iMobile for ReactNative,是SuperMap iMobile推出的一款基于React-Native框架的移动应用开发工具。基于该开发工具,用户可以使用JavaScript开发语言,开发出在Android和IOS操作系统下运行的原生移动GIS应用,入门门槛低,一次开发,处处运行。

282 lines (245 loc) 7.15 kB
import { Point2D } from 'imobile_for_reactnative/NativeModule/interfaces/data/SData' import { NativeModules } from 'react-native' const SPlot = NativeModules.SPlot export type AnimationInfo = AnimationWay | AnimationBlink | AnimationAttribute | AnimationShow |AnimationRotate |AnimationScale |AnimationGrow export interface Animation { /** * animationType:动画类型(0:路径动画,1:闪烁动画,2:属性动画,3:显隐动画,4:旋转动画,5:比例动画,6:生长动画) */ animationType: 0 | 1 | 2 | 3 | 4 | 5 | 6, /** * startTime:开始时间 */ startTime: number, /** * durationTime:持续时间 * */ durationTime: number, /** * startMode:播放推演开始状态(1:上一动作播放之后,2:点击开始 3:上一动作同时播放) */ startMode: 1 | 2 | 3, /** 动画名称*/ name?:string } interface color{ r:number, g:number, b:number, a?:number, } /** 路径动画*/ export interface AnimationWay extends Animation{ /** * wayPoints:路径动画点集合,地图坐标 */ wayPoints: Point2D[], /**线宽 cm */ lineWidth?:number, /**线风格 0:折线 , 1:曲线 */ pantType?:0|1, /**线颜色*/ lineColor?:color, } /** 闪烁动画*/ export interface AnimationBlink extends Animation{ /** 闪烁类型,是按照次数闪烁还是按照间隔闪烁 0:频率闪烁,1:数字闪烁*/ blinkStyle?: 0|1, /** 闪烁间隔 */ blinkinterval?: number, /** 闪烁次数 */ blinkNumber?: number, /** 颜色替换 */ blinkAnimationReplaceStyle?: 0|1, /** 交替的起始颜色 */ blinkAnimationStartColor?: color, /** 交替的替换颜色 */ blinkAnimationReplaceColor?: color, } /** 属性动画*/ export interface AnimationAttribute extends Animation{ /** 线宽属性是否有效 */ lineWidthAttr?: boolean, /** 开始线宽 */ startLineWidth?: number, /** 结束线宽 */ endLineWidth?: number, /** 线颜色属性是否有效 */ lineColorAttr?: boolean, /** 开始线色 */ startLineColor?: color, /** 结束线色 */ endLineColor?: color, /** 衬线宽属性是否有效 */ surroundLineWidthAttr?: boolean, /** 开始衬线宽 */ startSurroundLineWidth?: number, /** 结束衬线宽 */ endSurroundLineWidth?: number, /** 衬线颜色属性是否有效 */ surroundLineColorAttr?: boolean, /** 开始衬线颜色*/ startSurroundLineColor?: color, /** 结束衬线颜色*/ endSurroundLineColor?: color, } /** 显隐动画*/ export interface AnimationShow extends Animation{ /**显示状态 */ showState?:boolean, /** 设置显示效果*/ showEffect?: boolean, } /** 旋转动画*/ export interface AnimationRotate extends Animation { /** 旋转方向 0:顺时针,1:逆时针*/ rotateDirection?: 0|1, /** 开始旋转角度*/ startAngle?: { x: number, y: number }, /** 结束旋转角度*/ endAngle?: { x: number, y: number }, } /** 比例动画*/ export interface AnimationScale extends Animation{ /**开始比例 默认0 */ startScale?:number, /**结束比例 默认1*/ endScale?:number, } /**生长动画 */ export interface AnimationGrow extends Animation{ /**生长启始位置 默认0*/ startLocation?:number, /**生长结束位置 默认1*/ endLocation?:number, } /** * 初始化标绘符号库 * @param {*} plotSymbolPaths 符号库绝对路径数组 * @returns 返回符号库名称及id */ export function initPlotSymbol(plotSymbolPaths: string[]): Promise<{libId:number,libName:string}[]> { return SPlot.initPlotSymbol(plotSymbolPaths) } /** * 移除标绘库 * @param plotSymbolId 标绘库数据id * @returns 成功返回true 否则false */ export function removePlotLibrary(plotSymbolId:number): Promise<boolean> { return SPlot.removePlotLibrary(plotSymbolId) } /** * 设置标绘符号 * @param libraryID 符号库ID * @param symbolCode 符号Code * @returns 成功返回true 否则false */ export function setPlotSymbol(libId: number, symbolCode: number): Promise<boolean> { return SPlot.setPlotSymbol(libId, symbolCode) } /** * 读取态势推演xml文件 * @param filePath 文件绝对路径 * @returns 成功返回true 否则false */ export function readAnimationXmlFile(filePath: string): Promise<boolean> { return SPlot.readAnimationXmlFile(filePath) } /** * 播放态势推演动画 * @returns 成功返回true 否则false */ export function animationPlay(): Promise<boolean> { return SPlot.animationPlay() } /** * 暂停态势推演动画 * @returns 成功返回true 否则false */ export function animationPause(): Promise<boolean> { return SPlot.animationPause() } /** * 重置态势推演动画 * @returns 成功返回true 否则false */ export function animationReset(): Promise<boolean> { return SPlot.animationReset() } /** * 停止态势推演动画 * @returns 成功返回true 否则false */ export function animationStop(): Promise<boolean> { return SPlot.animationStop() } /** * 关闭态势推演动画 * @returns 成功返回true 否则false */ export function animationClose(): Promise<boolean> { return SPlot.animationClose() } /** * 创建态势推演动画 * @param createInfo 推演动画参数 Animation * @returns 成功返回true 否则false */ export function createAnimation(createInfo: AnimationInfo): Promise<boolean> { return SPlot.createAnimation(createInfo) } /** * 保存态势推演动画 * @param savePath 文件保存路径(绝对路径) * @param fileName 文件保存名称 * @returns 成功返回true 否则false */ export function animationSave(savePath: string, fileName: string): Promise<boolean> { return SPlot.animationSave(savePath, fileName) } /** * 获取当前标绘对象设置的动画类型数量(包含类型和数量 数组角标0-6对应7个动画类型 内容代表有几个此类动画) * @param geoId * @returns 返回动画类型type数组 */ export function getCurrentGeoAnimationArray(geoId: number): Promise<Array<number>> { return SPlot.getCurrentGeoAnimationArray(geoId) } /** * 根据名称删除标绘动画 * name标绘动画名称 * @returns 成功返回true 否则false */ export function deleteAnimation(value: string | number): Promise<boolean> { if (typeof value === 'number') { return SPlot.deleteAnimationByIndex(value) }else{ return SPlot.deleteAnimationByName(value) } } /** * 获取动画信息 * @returns 返回指定动画节点信息数组 */ export function getAnimationInfo(): Promise<AnimationInfo[]> { return SPlot.getAnimationInfo() } /** * 移动动画位置 * index动画节点序号 * isUp(true上移 false下移) * @returns 成功返回true 否则false */ export function moveAnimation(index: number, isUp: boolean): Promise<boolean> { return SPlot.moveAnimation(index, isUp) } /** * 根据动画序号修改动画属性 * index动画序号 * nodeInfo动画信息 * @returns 成功返回true 否则false */ export function modifyAnimation(index: number, nodeInfo: AnimationInfo): Promise<boolean> { return SPlot.modifyAnimation(index, nodeInfo) }