UNPKG

imobile_for_reactnative

Version:

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

189 lines (168 loc) 6.1 kB
/** * 数据配准类,与组件SMRectifyView一起使用 * * SMRectifyView数据集加入到两幅地图上进行配准 * 两幅地图在以下被称为 A图 和 B图 * * @author yangsl */ import { NativeModules } from 'react-native' import { DatasetInfo, Point2D } from '../data/SData' const SRectify = NativeModules.SRectify /** 控制点集合 */ export interface ControlPoints { /** 源地图点集合 */ originalPoints: Point2D[], /** 参考图点集合 */ targetPoints: Point2D[], } interface TransformationResampleMode { //最邻近法 NEAREST: 0, //双线性内插法 BILINEAR: 1, //三次卷积内插法 CUBIC: 2, } /** 配准重采样模式 */ export type TTransformationResampleMode = TransformationResampleMode[keyof TransformationResampleMode] /** 配准重采样模式实例 */ export const ITransformationResampleMode: TransformationResampleMode = SRectify.TransformationResampleMode interface TransformationMode { //矩形配准 RECT: 0, //线性配准 LINEAR: 1, //多项式配准 SQUARE: 2, //偏移配准 OFFSET: 4, } /** 配准类型 */ export type TTransformationMode = TransformationMode[keyof TransformationMode] /** 配准类型实例 */ export const ITransformationMode: TransformationMode = SRectify.TransformationMode /** 配准数据参数 */ export interface RectifyParams extends DatasetInfo { transformationMode: TTransformationMode, } /** 快速配准数据参数 */ export interface FastRectifyParams extends DatasetInfo { /** */ rectifyFilePath: string, } /** 重采样配准参数 */ export interface RectifyResultParams extends DatasetInfo { /** 重采样模式 */ resmapleMode: TTransformationResampleMode, /** 重采样网格大小 */ cellSize: number, } /** 数据源 和 数据集数组 */ export interface RectifyDatasets { datasourceName: string, datasets: string[], } /** * 设置配准数据 和 参考数据,并添加到SMRectifyView中 * @param datasetsInfo 配准数据源 和 数据集数组 * @param referDatasetsInfo 参考数据源 和 数据集数组 * @param transformationMode 配准算法 * @returns 返回是否设置成功 */ export function setRectifyData(datasetsInfo: RectifyDatasets[], referDatasetsInfo: RectifyDatasets[], transformationMode: TTransformationMode): Promise<boolean> { return SRectify.setRectifyData(datasetsInfo, referDatasetsInfo, transformationMode) } /** * 数据集配准 * @param datasetInfo 数据配置的数据源和数据集名称,以及配准模式 * @param transformationMode 配准类型 * @param saveAsDatasetInfo 结果另存为配置的数据源和数据集名称,并配置是否重采样 * 若有数据源和数据集,则需要另存为; 若有重采样模式,则需要重采样 * @returns 是否配准成功 */ export function rectifyExecute(datasetInfo: DatasetInfo, transformationMode: TTransformationMode, saveAsDatasetInfo: RectifyResultParams | DatasetInfo | null): Promise<boolean> { return SRectify.rectifyExecute(datasetInfo, transformationMode, saveAsDatasetInfo) } /** * 快速配准 * @param datasetInfo 数据配置的数据源和数据集名称 * @param rectifyFilePath 配准文件xml绝对路径 * @param saveAsDatasetInfo 结果另存为配置的数据源和数据集名称,并配置是否重采样 * 若有数据源和数据集,则需要另存为; 若有重采样模式,则需要重采样 * @returns 是否配准成功 */ export function rectifyFast(datasetInfo: DatasetInfo, rectifyFilePath: string, saveAsDatasetInfo: RectifyResultParams | DatasetInfo | null): Promise<boolean> { return SRectify.rectifyFast(datasetInfo, rectifyFilePath, saveAsDatasetInfo) } /** * 设置组件SMRectifyView两幅地图是否是关联浏览(同时放大缩小移动) * @param isAssociat 是否是关联浏览 * @returns 返回是否是关联浏览成功 */ export function setIsAssociatedView(isAssociat: boolean): Promise<boolean> { return SRectify.setIsAssociatedView(isAssociat) } /** * 设置图中点位置 * @param target 把点添加到指定地图, 0: 源图(A图), 1: 目标图(B图) * @param index 设置添加点的序号 * @param point 设置添加点的坐标 * @returns 返回点是否设置成功 */ export function setControlPoint(target: 0 | 1, index: number, point: Point2D): Promise<boolean> { return SRectify.setControlPoint(target, index, point) } //todo appointControlPoint /** * 设置当前控制点,通过手势修改 * @param index 当前控制点的index * @returns 返回是否设置成功 */ export function setCurrentIndex(index: number): Promise<boolean> { return SRectify.setCurrentIndex(index) } /** * 清除图上的数据 * @returns 返回是否清除成功 */ export function clear(): Promise<boolean> { return SRectify.clear() } /** * 配准信息导出 * @param filePath 导出配准信息文件路径 * @returns 返回是否导出成功 */ export function rectifyInfoSaveAs(filePath: string): Promise<boolean> { return SRectify.rectifyInfoSaveAs(filePath) } /** * 获取控制点的坐标 * @returns 返回的控制点的坐标(地图点) */ export function getControlPoints(): Promise<ControlPoints> { return SRectify.getControlPoints() } /** * 删除控制点 * @param index 控制点index * @returns 是否删除成功 */ export function removeControlPoint(index: number): Promise<boolean> { return SRectify.removeControlPoint(index) } /** * 获取是否所有点都有效 * @returns 是否所有点都有效 */ export function isAllPointValid(): Promise<boolean> { return SRectify.isAllPointValid() } /** * 释放校准组件 * @returns 返回是否释放成功 */ export function dispose(): Promise<boolean> { return SRectify.dispose() }