UNPKG

rn_supermap

Version:

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

711 lines (655 loc) 15 kB
import {NativeModules, Platform, NativeEventEmitter, DeviceEventEmitter} from 'react-native' import {EventConst} from '../../constains/index' let SNavigationManager = NativeModules.SNavigationManager const nativeEvt = new NativeEventEmitter(SNavigationManager) /** * 导航结束监听 * @param handlers */ function setIndustryNavigationListener(handlers) { try { if (Platform.OS === 'ios' && handlers) { if (typeof handlers.callback === 'function') { nativeEvt.addListener(EventConst.INDUSTRYNAVIAGTION, function (e) { handlers.callback(e); }); } } else if (Platform.OS === 'android' && handlers) { if (typeof handlers.callback === "function") { DeviceEventEmitter.addListener(EventConst.INDUSTRYNAVIAGTION, function (e) { handlers.callback(e); }); } } } catch (error) { console.error(error); } } /** * 主动停止导航监听 * @param handlers */ function setStopNavigationListener(handlers) { try { if (Platform.OS === 'ios' && handlers) { if (typeof handlers.callback === 'function') { nativeEvt.addListener(EventConst.STOPNAVIAGTION, function (e) { handlers.callback(e); }); } } else if (Platform.OS === 'android' && handlers) { if (typeof handlers.callback === "function") { DeviceEventEmitter.addListener(EventConst.STOPNAVIAGTION, function (e) { handlers.callback(e); }); } } } catch (error) { console.error(error); } } /** * 绘制在线路径分析的路径 * @param pathPoints * @returns {*} */ function drawOnlinePath(pathPoints) { try { return SNavigationManager.drawOnlinePath(pathPoints) } catch (e) { console.error(e) } } // /** // * 判断在线搜索的起始点是否在地图导航范围内 // * @param startPoint // * @param endPoint // * @returns {*} // */ // function isPointsInMapBounds(startPoint, endPoint) { // try { // return SNavigationManager.isPointsInMapBounds(startPoint, endPoint) // } catch (e) { // console.error(e) // } // } /** * 清除导航路线 * @returns {*|void|Promise<void>} */ function clearTrackingLayer() { try { return SNavigationManager.clearTrackingLayer() } catch (e) { console.error(e) } } /** * 设置行业导航 * @param selectedObj { "name":string, * "modelFileName":string, * "datrasourceName":string * } * @returns {*} */ function startNavigation(selectedObj) { try { return SNavigationManager.startNavigation(selectedObj) } catch (e) { console.error(e) } } /** * 设置室内导航 * @returns {*|void|Promise<void>} */ function startIndoorNavigation() { try { return SNavigationManager.startIndoorNavigation() } catch (e) { console.error(e) } } /** * 室外导航路径分析 * @returns {*|void|Promise<void>} */ function beginNavigation(x1, y1, x2, y2) { try { return SNavigationManager.beginNavigation(x1, y1, x2, y2) } catch (e) { console.error(e) } } /** * 室内导航路径分析 * @returns {*|void|Promise<void>} */ function beginIndoorNavigation() { try { return SNavigationManager.beginIndoorNavigation() } catch (e) { console.error(e) } } /** * 开启室内导航 * @returns {*|void|Promise<void>} */ function indoorNavigation(firstP) { try { return SNavigationManager.indoorNavigation(firstP) } catch (e) { console.error(e) } } /** * 是否在导航过程中(处理是否退出fullMap) * @returns {Promise<Promise.yes>|Promise<boolean>} */ function isGuiding() { try { return SNavigationManager.isGuiding() } catch (e) { console.error(e) } } /** * 开启室外导航 * @returns {*|void|Promise<void>} */ function outdoorNavigation(firstP) { try { return SNavigationManager.outdoorNavigation(firstP) } catch (e) { console.error(e) } } /** * 设置当前楼层ID * @param floorID * @returns {*} */ function setCurrentFloorID(floorID) { try { return SNavigationManager.setCurrentFloorID(floorID) } catch (e) { console.error(e) } } /** * 获取当前楼层ID * @returns {*} */ function getCurrentFloorID() { try { return SNavigationManager.getCurrentFloorID() } catch (e) { console.error(e) } } /** * 获取当前楼层信息表中的楼层信息 并且初始化了楼层控件 * @returns {*} */ function getFloorData() { try { return SNavigationManager.getFloorData() } catch (e) { console.error(e) } } /** * 获取起始点 * @param x * @param y * @param isindoor * @param floorID * @returns {undefined} */ function getStartPoint(x, y, isindoor, floorID = null) { try { return SNavigationManager.getStartPoint(x, y, isindoor, floorID) } catch (e) { console.error(e) } } /** * 获取终点 * @param x * @param y * @param isindoor * @param floorID * @returns {undefined} */ function getEndPoint(x, y, isindoor, floorID = null) { try { return SNavigationManager.getEndPoint(x, y, isindoor, floorID) } catch (e) { console.error(e) } } /** * 清除起终点 * @returns {*|void|Promise<void>} */ function clearPoint() { try { if (SNavigationManager.clearPoint) { return SNavigationManager.clearPoint() } else { return true } } catch (e) { console.error(e) } } /** * 清除起终点 * @returns {*|void|Promise<void>} */ function stopGuide() { try { if (SNavigationManager.stopGuide) { return SNavigationManager.stopGuide() } else { return true } } catch (e) { console.error(e) } } /** * 判断是否是室内点 * @returns {*|void|Promise<void>} */ function isIndoorPoint(x, y) { try { return SNavigationManager.isIndoorPoint(x, y) } catch (e) { console.error(e) } } /** * 打开实时路况信息 * @returns {*|void|Promise<void>} */ function openTrafficMap(params) { try { return SNavigationManager.openTrafficMap(params) } catch (e) { console.error(e) } } /** * 判断是否打开实时路况 * @returns {*|void|Promise<void>} */ function isOpenTrafficMap() { try { return SNavigationManager.isOpenTrafficMap() } catch (e) { console.error(e) } } /** * 移除实时路况 * @returns {*|void|Promise<void>} */ function removeTrafficMap(name) { try { return SNavigationManager.removeTrafficMap(name) } catch (e) { console.error(e) } } // /** // * 判断当前工作空间是否存在网络数据集 // * @returns {*} // */ // function hasNetworkDataset() { // try { // return SNavigationManager.hasNetworkDataset() // } catch (e) { // console.error(e) // } // } /** * 判断当前工作空间是否存在线数据集 * @returns {*} */ function hasLineDataset() { try { return SNavigationManager.hasLineDataset() } catch (e) { console.error(e) } } /** * 将路网数据集添加到地图上 * @returns {*|void|Promise<void>} */ function addNetWorkDataset() { try { return SNavigationManager.addNetWorkDataset() } catch (e) { console.error(e) } } /** * 将路网数据集和线数据集从地图移除 * @returns {undefined} */ function removeNetworkDataset() { try { return SNavigationManager.removeNetworkDataset() } catch (e) { console.error(e) } } /** * 生成路网 * @returns {undefined} */ function buildNetwork() { try { return SNavigationManager.buildNetwork() } catch (e) { console.error(e) } } /** * GPS开始 * @returns {*|void|Promise<void>} */ function gpsBegin() { try { return SNavigationManager.gpsBegin() } catch (e) { console.error(e) } } /** * 添加GPS轨迹 * @returns {undefined} */ function addGPSRecordset() { try { return SNavigationManager.addGPSRecordset() } catch (e) { console.error(e) } } /** * 拷贝室外地图网络模型snm文件 * @returns {*|void|Promise<void>} */ function copyNaviSnmFile(path) { try { if (SNavigationManager.copyNaviSnmFile) { return SNavigationManager.copyNaviSnmFile(path) } else { return true } } catch (e) { console.error(e) } } /** * 地图选点起点地理名称监听 * @param handlers */ let setStartPointNameListener = handlers => { try { //if(this.startPointSelectListener) return if (Platform.OS === 'ios' && handlers) { if (typeof handlers.callback === 'function') { this.startPointSelectListener = nativeEvt.addListener(EventConst.MAPSELECTPOINTNAMESTART, function (e) { handlers.callback(e); }); } } else if (Platform.OS === 'android' && handlers) { if (typeof handlers.callback === "function") { this.startPointSelectListener = DeviceEventEmitter.addListener(EventConst.MAPSELECTPOINTNAMESTART, function (e) { handlers.callback(e); }); } } } catch (error) { console.error(error); } } /** * 地图选点终点地理名称监听 * @param handlers */ let setEndPointNameListener = handlers => { try { //if(this.endPointSelectListener) return if (Platform.OS === 'ios' && handlers) { if (typeof handlers.callback === 'function') { this.endPointSelectListener = nativeEvt.addListener(EventConst.MAPSELECTPOINTNAMEEND, function (e) { handlers.callback(e); }); } } else if (Platform.OS === 'android' && handlers) { if (typeof handlers.callback === "function") { this.endPointSelectListener = DeviceEventEmitter.addListener(EventConst.MAPSELECTPOINTNAMEEND, function (e) { handlers.callback(e); }); } } } catch (error) { console.error(error); } } /** * 初始化导航语音播报 * @returns {boolean|Promise<void>} */ function initSpeakPlugin() { try { if (Platform.OS === 'android') { return SNavigationManager.initSpeakPlugin(); } else { return true; } } catch (error) { console.warn(error) } } /** * 销毁语音播报 * @returns {boolean|*} */ function destroySpeakPlugin() { try { if (Platform.OS === 'android') { return SNavigationManager.destroySpeakPlugin(); } else { return true; } } catch (error) { console.warn(error) } } /** * 获取导航路径长度 * @param isIndoor 是否室内 * @returns {*} */ function getNavPathLength(isIndoor) { try { return SNavigationManager.getNavPathLength(isIndoor) } catch (e) { console.error(e) } } // /** // * 判断当前地图是否是室内地图 // * @returns {*} // */ // function isIndoorMap() { // try { // return SNavigationManager.isIndoorMap() // } catch (e) { // console.error(e) // } // } /** * 判断当前点是否在数据集的bounds范围内 * @param point * @param networkDataset * @returns {*} */ function isInBounds(point, networkDataset = null) { try { return SNavigationManager.isInBounds(point, networkDataset) } catch (e) { console.error(e) } } /** * 获取当前地理位置信息 返回地理坐标 * @returns {*} */ function getCurrentMapPosition() { try { return SNavigationManager.getCurrentMapPosition() } catch (e) { console.error(e) } } /** * 获取导航路径详情 * @param isIndoor 是否室内 * @returns {*} */ function getPathInfos(isIndoor) { try { return SNavigationManager.getPathInfos(isIndoor) } catch (e) { console.error(e) } } /** * 打开数据源,用于室外导航 * @param params * @returns {*} */ function openNavDatasource(params) { try { return SNavigationManager.openNavDatasource(params) } catch (e) { console.error(e) } } /** * 获取数据源中含有的所有网络数据集 * @param udb * @returns {*} */ function getNetworkDataset() { try { return SNavigationManager.getNetworkDataset() } catch (e) { console.error(e) } } /** * 获取点所在的所有导航数据源(室内)数据集(室外) * @param x * @param y * @returns {*} */ function getPointBelongs(x,y) { try{ return SNavigationManager.getPointBelongs(x,y) }catch (e) { console.error(e) } } /** * 获取到起始点距离最近的门的位置 * @param params * @returns {*} */ function getDoorPoint(params) { try { return SNavigationManager.getDoorPoint(params) }catch (e) { console.error(e) } } /** * 添加引导线(分段导航) * @param startPoint * @param endPoint * @returns {*} */ function addLineOnTrackingLayer(startPoint, endPoint) { try { return SNavigationManager.addLineOnTrackingLayer(startPoint, endPoint) }catch (e) { console.error(e) } } /** * 清除导航路线和跟踪层,不清除callout点 * @returns {*} */ function clearPath() { try { return SNavigationManager.clearPath() }catch (e) { console.error(e) } } export { setIndustryNavigationListener, setStopNavigationListener, drawOnlinePath, // isPointsInMapBounds, clearTrackingLayer, startNavigation, startIndoorNavigation, beginNavigation, beginIndoorNavigation, outdoorNavigation, indoorNavigation, getCurrentFloorID, setCurrentFloorID, getFloorData, getStartPoint, getEndPoint, clearPoint, stopGuide, isIndoorPoint, openTrafficMap, isOpenTrafficMap, removeTrafficMap, addNetWorkDataset, removeNetworkDataset, buildNetwork, // hasNetworkDataset, hasLineDataset, gpsBegin, addGPSRecordset, copyNaviSnmFile, isGuiding, setStartPointNameListener, setEndPointNameListener, // isIndoorMap, getCurrentMapPosition, isInBounds, openNavDatasource, getNetworkDataset, getPathInfos, getNavPathLength, initSpeakPlugin, destroySpeakPlugin, getPointBelongs, getDoorPoint, addLineOnTrackingLayer, clearPath, }