imobile_for_reactnative
Version:
iMobile for ReactNative,是SuperMap iMobile推出的一款基于React-Native框架的移动应用开发工具。基于该开发工具,用户可以使用JavaScript开发语言,开发出在Android和IOS操作系统下运行的原生移动GIS应用,入门门槛低,一次开发,处处运行。
282 lines (245 loc) • 7.15 kB
text/typescript
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)
}