UNPKG

rn_supermap

Version:

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

282 lines (259 loc) 8.38 kB
/********************************************************************************* Copyright © SuperMap. All rights reserved. Author: Yang Shanglong E-mail: yangshanglong@supermap.com **********************************************************************************/ import { NativeModules } from 'react-native'; let TA = NativeModules.JSTransportationAnalyst; import TransportationAnalystSetting from './TransportationAnalystSetting' import GeoLineM from './GeoLineM' export default class TransportationAnalyst { async createObj() { try { let transportationAnalystId = await TA.createObj(); let transportationAnalyst = new TransportationAnalyst(); transportationAnalyst._SMTransportationAnalystId = transportationAnalystId; return transportationAnalyst; } catch (e) { console.error(e); } } async dispose() { try { await TA.dispose(this._SMTransportationAnalystId); } catch (e) { console.error(e); } } /** * 创建内存文件 * @param path * @returns {Promise} */ async createModel(path) { try { return await TA.createModel(this._SMTransportationAnalystId, path); } catch (e) { console.error(e); } } /** * 根据指定的参数进行最近设施查找分析,事件点为结点 ID * @param transportationAnalystParameter * @param eventID * @param facilityCount * @param isFromEvent * @param maxWeight * @returns {Promise} */ async findClosestFacilityByNode(transportationAnalystParameter, eventID, facilityCount, isFromEvent, maxWeight) { try { return await TA.findClosestFacilityByNode(this._SMTransportationAnalystId, transportationAnalystParameter._SMTransportationAnalystParameterId, eventID, facilityCount, isFromEvent, maxWeight); } catch (e) { console.error(e); } } /** * 根据指定的参数进行最近设施查找分析,事件点为结点 ID * @param transportationAnalystParameter * @param eventID * @param facilityCount * @param isFromEvent * @param maxWeight * @returns {Promise} */ async findClosestFacilityByPoint2D(transportationAnalystParameter, point2D, facilityCount, isFromEvent, maxWeight) { try { return await TA.findClosestFacilityByPoint2D(this._SMTransportationAnalystId, transportationAnalystParameter._SMTransportationAnalystParameterId, point2D._SMPoint2DId, facilityCount, isFromEvent, maxWeight); } catch (e) { console.error(e); } } /** * 根据给定的参数进行选址分区分析 * @param locationAnalystParameter * @returns {Promise} */ async findLocation(locationAnalystParameter) { try { return await TA.findLocation(this._SMTransportationAnalystId, locationAnalystParameter._SMLocationAnalystParameterId); } catch (e) { console.error(e); } } /** * 多旅行商(物流配送)分析,配送中心为结点 ID 数组 * @param transportationAnalystParameter * @param centerNodes * @param hasLeastTotalCost * @returns {Promise} */ async findMTSPPathByNodes(transportationAnalystParameter, centerNodes = [], hasLeastTotalCost = true) { try { return await TA.findMTSPPathByNodes(this._SMTransportationAnalystId, transportationAnalystParameter._SMTransportationAnalystParameterId, centerNodes, hasLeastTotalCost); } catch (e) { console.error(e); } } /** * 多旅行商(物流配送)分析,配送中心为点坐标串 * @param transportationAnalystParameter * @param centerPoints [{x, y}, {x, y}] * @param hasLeastTotalCost * @returns {Promise} */ async findMTSPPathByPoint2Ds(transportationAnalystParameter, centerPoints = [], hasLeastTotalCost = false) { try { let { pathGuideIds, routeIds, edges, nodesArr, stopIndexesArr, stopWeightsArr, weightsArr } = await TA.findMTSPPathByPoint2Ds(this._SMTransportationAnalystId, transportationAnalystParameter._SMTransportationAnalystParameterId, centerPoints, hasLeastTotalCost); let routes = [] if (routeIds) { for (let i = 0; i < routeIds.length; i++) { let route = new GeoLineM() route._SMGeoLineId = routeIds[i] routes.push(route) } } return { pathGuideIds, routes, edges, nodesArr, stopIndexesArr, stopWeightsArr, weightsArr } } catch (e) { console.error(e); } } /** * 最佳路径分析 * @param transportationAnalystParameter * @param hasLeastTotalCost * @returns {Promise} */ async findPath(transportationAnalystParameter, hasLeastTotalCost = false) { try { let { pathGuideIds, routeIds, edges, nodesArr, stopIndexesArr, stopWeightsArr, weightsArr } = await TA.findPath(this._SMTransportationAnalystId, transportationAnalystParameter._SMTransportationAnalystParameterId, hasLeastTotalCost); let routes = [] if (routeIds) { for (let i = 0; i < routeIds.length; i++) { let route = new GeoLineM() route._SMGeometryId = routeIds[i] // route._SMGeoLineId = routeIds[i] routes.push(route) } } return { pathGuideIds, routes, edges, nodesArr, stopIndexesArr, stopWeightsArr, weightsArr } } catch (e) { console.error(e); } } /** * 服务区分析 * @param transportationAnalystParameter * @param weights * @param isFromCenter * @param isCenterMutuallyExclusive * @returns {Promise} */ async findServiceArea(transportationAnalystParameter, weights = [], isFromCenter = true, isCenterMutuallyExclusive = true) { try { return await TA.findServiceArea(this._SMTransportationAnalystId, transportationAnalystParameter._SMTransportationAnalystParameterId, weights, isFromCenter, hasLeastTotalCost); } catch (e) { console.error(e); } } /** * 返回交通网络分析环境设置对象 * @returns {Promise.<Promise|Promise.<FacilityAnalystSetting>>} */ async getAnalystSetting() { try { let settingId = await TA.getAnalystSetting(this._SMTransportationAnalystId) let setting = await new TransportationAnalystSetting().createObj() setting._SMTransportationAnalystSettingId = settingId return setting } catch (e) { console.error(e); } } /** * 加载网络模型 * @returns {Promise.<*>} */ async load() { try { return await TA.load(this._SMTransportationAnalystId) } catch (e) { console.error(e); } } /** * 加载内存文件 * @param filePath * @param networkDataset * @returns {Promise.<Promise|Promise.<void>>} */ async loadModel(filePath, networkDataset) { try { return await TA.loadModel(this._SMTransportationAnalystId, filePath, networkDataset._SMDatasetVectorId) } catch (e) { console.error(e); } } /** * 设置交通网络分析环境设置对象 * @param transportationAnalystSetting * @returns {Promise.<void>} */ async setAnalystSetting(transportationAnalystSetting) { try { await TA.setAnalystSetting(this._SMTransportationAnalystId, transportationAnalystSetting._SMTransportationAnalystSettingId) } catch (e) { console.error(e); } } /** * 该方法用来更新弧段的权值 * @param edgeID * @param fromNodeID * @param toNodeID * @param weightName * @param weight * @returns {Promise.<void>} */ async updateEdgeWeight(edgeID, fromNodeID, toNodeID, weightName, weight) { try { await TA.updateEdgeWeight(this._SMTransportationAnalystId, edgeID, fromNodeID, toNodeID, weightName, weight) } catch (e) { console.error(e); } } /** * 该方法用来更新转向结点的权值 * @param nodeID * @param fromEdgeID * @param toEdgeID * @param weightName * @param weight * @returns {Promise.<void>} */ async updateTurnNodeWeight(nodeID, fromEdgeID, toEdgeID, weightName, weight) { try { await TA.updateTurnNodeWeight(this._SMTransportationAnalystId, nodeID, fromEdgeID, toEdgeID, weightName, weight) } catch (e) { console.error(e) } } }