UNPKG

rn_supermap

Version:

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

458 lines (423 loc) 13 kB
/********************************************************************************* Copyright © SuperMap. All rights reserved. Author: Will E-mail: pridehao@gmail.com **********************************************************************************/ import {NativeModules,DeviceEventEmitter} from 'react-native'; let N = NativeModules.JSNavigation2; import Dataset from './Dataset.js'; import GeoLine from './GeoLine'; /** * @class Navigation2 * @description 行业导航类,提供基于拓扑路网的路径分析与导引。 */ export default class Navigation2{ /** * 设置路径可见 * @memberOf Navigation2 * @param {boolean} visible - 设置分析路径是否可见。 * @returns {Promise.<void>} */ async setPathVisible(visible){ try{ await N.setPathVisible(this._SMNavigation2Id,visible); }catch (e){ console.error(e); } } /** * 设置用于分析的网络数据集。必选。 * @memberOf Navigation2 * @param {object} datasetVector - 网络数据集。 * @returns {Promise.<void>} */ async setNetworkDataset(datasetVector){ try{ await N.setNetworkDataset(this._SMNavigation2Id,datasetVector._SMDatasetVectorId); }catch (e){ console.error(e); } } /** * 加载内存文件。 * @memberOf Navigation2 * @param {string} path - 内存文件路径。 * @returns {Promise.<void>} */ async loadModel(path){ try{ await N.loadModel(this._SMNavigation2Id,path); }catch(e){ console.error(e); } } /** * 设置导航起点 * @memberOf Navigation2 * @param x - 起点横坐标 * @param y - 起点纵坐标 * @param map - 导航所属地图对象 * @returns {Promise.<void>} */ async setStartPoint(x,y,map){ try{ await N.setStartPoint(this._SMNavigation2Id,x,y,map._SMMapId); }catch(e){ console.error(e); } } /** * 设置导航终点 * @memberOf Navigation2 * @param x - 终点横坐标 * @param y - 终点纵坐标 * @param map - 导航所属地图对象 * @returns {Promise.<void>} */ async setDestinationPoint(x,y,map){ try{ await N.setDestinationPoint(this._SMNavigation2Id,x,y,map._SMMapId); }catch(e){ console.error(e); } } /** * 路径分析 * @memberOf Navigation2 * @returns {Promise.<Promise.boolean>} */ async routeAnalyst(){ try{ var {finished} = await N.routeAnalyst(this._SMNavigation2Id); return finished; }catch(e){ console.error(e); } } /** * 开始导航 * @memberOf Navigation2 * @param guideMode - 导航模式:1:真实导航;2:模拟导航 * @returns {Promise.<Promise.boolean>} */ async startGuide(guideMode){ try{ var {isGuiding} = await N.startGuide(this._SMNavigation2Id,guideMode); return isGuiding; }catch(e){ console.error(e); } } /** * 设置转向表数据集。可选。 * @memberOf Navigation2 * @param {DatasetVector} value - 转向表数据集。 * @returns {Promise.<void>} */ async setTurnDataset(value){ try{ await N.setTurnDataset(this._SMNavigation2Id,value._SMDatasetVectorId); }catch(e){ console.error(e); } } /** * 设置高程点数据集。可选。 * @memberOf Navigation2 * @param {DatasetVector} value - 转向表数据集。 * @returns {Promise.<void>} */ async setAltimetricPointDataset(value){ try{ await N.setAltimetricPointDataset(this._SMNavigation2Id,value._SMDatasetVectorId); }catch(e){ console.error(e); } } /** * 获取路径分析线路。 * @memberOf Navigation2 * @returns {Promise.<void>} */ async getRoute(){ try{ var {geoLineId} = await N.getRoute(this._SMNavigation2Id); var geoLine = new GeoLine(); geoLine._SMGeoLineId = geoLineId; return geoLine; }catch(e){ console.error(e); } } /** * 清除路径分析结果。 * @memberOf Navigation2 * @returns {Promise.<GeoLine>} */ async cleanPath(){ try{ await N.cleanPath(this._SMNavigation2Id); }catch(e){ console.error(e); } } /** * 暂停导航 * @memberOf Navigation2 * @returns {Promise.<void>} */ async pauseGuide(){ try{ await N.pauseGuide(this._SMNavigation2Id); }catch(e){ console.error(e); } } /** * 继续导航 * @memberOf Navigation2 * @returns {Promise.<void>} */ async resumeGuide(){ try{ await N.resumeGuide(this._SMNavigation2Id); }catch(e){ console.error(e); } } /** * 停止引导。 * @memberOf Navigation2 * @returns {Promise.<Promise.boolean>} */ async stopGuide(){ try{ var {stoped} = await N.stopGuide(this._SMNavigation2Id); return stoped }catch(e){ console.error(e); } } /** * 判断是否正在进行引导。 * @memberOf Navigation2 * @returns {Promise.<Promise.yes>} */ async isGuiding(){ try{ var {yes} = await N.isGuiding(this._SMNavigation2Id); return yes }catch(e){ console.error(e); } } /** * 引导过程中是否允许平移地图。 * @memberOf Navigation2 * @param {boolean} pan * @returns {Promise.<void>} */ async enablePanOnGuide(pan){ try{ await N.enablePanOnGuide(this._SMNavigation2Id,pan); }catch(e){ console.error(e); } } /** * 导航中,小车在屏幕中居中显示 * @memberOf Navigation2 * @returns {Promise.<void>} */ async locateMap(){ try{ await N.locateMap(this._SMNavigation2Id); }catch(e){ console.error(e); } } /** * 设置是否自动采集GPS,设置为false时,需用户自己调用setGPSData传入GPS数据。 * @memberOf Navigation2 * @param {boolean} isAutoNavi - 是否自动采集GPS,默认自动采集。 * @returns {Promise.<void>} */ async setIsAutoNavi(isAutoNavi){ try{ await N.setIsAutoNavi(this._SMNavigation2Id,isAutoNavi); }catch(e){ console.error(e); } } /** * 设置GPS数据。 * @memberOf Navigation2 * @param {object} newGps - GPS数据。 * @returns {Promise.<void>} */ async setGPSData(newGps){ try{ await N.setGPSData(this._SMNavigation2Id,newGps); }catch(e){ console.error(e); } } /** * 设置最高限速字段 * @memberOf Navigation2 * @param {string} value - 速度字段名称 * @returns {Promise.<void>} */ async setSpeedField(value){ try{ await N.setSpeedField(this._SMNavigation2Id,value); }catch(e){ console.error(e); } } /** * 获取障碍点集合 * @memberOf Navigation2 * @returns {Promise.<array>} */ async getBarrierPoints(){ try{ var {barrierPoints} = await N.getBarrierPoints(this._SMNavigation2Id); return barrierPoints; }catch(e){ console.error(e); } } /** * 设置障碍点 * @memberOf Navigation2 * @param {array} barrierPoints - 障碍点集合(参数为null时,为清空障碍点) * @returns {Promise.<void>} */ async setBarrierPoints(barrierPoints){ try{ await N.setBarrierPoints(this._SMNavigation2Id,barrierPoints); }catch(e){ console.error(e); } } /** * 设置障碍节点 * @memberOf Navigation2 * @param {array[number]} value - 障碍节点集合(参数为null时,为清空障碍节点);其包含的int值为网络数据集中的节点(Node)数据的SmID值 * @returns {Promise.<void>} */ async setBarrierNodes(value){ try{ await N.setBarrierNodes(this._SMNavigation2Id,value); }catch(e){ console.error(e); } } /** * 设置障碍边 * @memberOf Navigation2 * @param {array[number]} value - 障碍边集合(参数为null时,为清空障碍边);其包含的int值为网络数据集中的线数据的SmID值 * @returns {Promise.<void>} */ async setBarrierEdges(value){ try{ await N.setBarrierEdges(this._SMNavigation2Id,value); }catch(e){ console.error(e); } } /** * 获取障碍边集合 * @memberOf Navigation2 * @returns {Promise.<void>} */ async getBarrierEdges(){ try{ var {barrierEdges} = await N.getBarrierEdges(this._SMNavigation2Id); return barrierEdges; }catch(e){ console.error(e); } } /** * 设置离终点的距离变化监听器。 * @param events - 离终点的距离变化监听器回调函数对象。 * @description 用法:await industryNavi.setDistanceChangeListener({distanceChange:(e) => {console.log(e.distance}}) * @returns {Promise} */ async setDistanceChangeListener(events){ try{ var success = await N.setDistanceChangeListener(this._SMNavigation2Id); if(success){ typeof events.distanceChange !== 'function' || DeviceEventEmitter.addListener("com.supermap.RN.JSNavigation2.distance_change",function (e) { events.distanceChange(e); }); } return success; }catch(e){ console.error(e); } } /** * 设置导航信息变化监听器 * @param callback - 导航信息变化监听器回调函数。 * @description 用法:await industryNavi.setDistanceChangeListener( * { * startNavi:(e) => {console.log("start")}, * naviInfoUpdate:(e) => {console.log(e.curRoadName + e.direction ....)}, * arrivedDestination:(e) => {console.log("updated")}, * stopNavi:(e) => {console.log("stop")}, * adjustFailure:(e) => {console.log("failure")}, * playNaviMessage:(e) => {console.log(e.message)}, * * } * ); * 其中naviInfoUpdate回调中的参数是一个NaviInfo对象,其结构为: * { * curRoadName:--, * direction:--, * iconType:--, * nextRoadName:--, * routeRemainDis:--, * routeRemainTime:--, * segRemainDis:-- * } * @returns {Promise} */ async addNaviInfoListener(events){ try{ var success = await N.addNaviInfoListener(this._SMNavigation2Id); if(success){ typeof events.startNavi !== 'function' || DeviceEventEmitter.addListener("com.supermap.RN.JSNavigation2.start_navi",function (e) { events.startNavi(e); }); typeof events.naviInfoUpdate !== 'function' || DeviceEventEmitter.addListener("com.supermap.RN.JSNavigation2.navi_info_update",function (e) { events.naviInfoUpdate(e); }); typeof events.arrivedDestination !== 'function' || DeviceEventEmitter.addListener("com.supermap.RN.JSNavigation2.arrived_destination",function (e) { events.arrivedDestination(e); }); typeof events.stopNavi !== 'function' || DeviceEventEmitter.addListener("com.supermap.RN.JSNavigation2.stop_navi",function (e) { events.stopNavi(e); }); typeof events.adjustFailure !== 'function' || DeviceEventEmitter.addListener("com.supermap.RN.JSNavigation2.adjust_failure",function (e) { events.adjustFailure(e); }); typeof events.playNaviMessage !== 'function' || DeviceEventEmitter.addListener("com.supermap.RN.JSNavigation2.play_navi_massage",function (e) { events.playNaviMessage(e); }); } return success; }catch(e){ console.error(e); } } }