imobile_for_reactnative
Version:
iMobile for ReactNative,是SuperMap iMobile推出的一款基于React-Native框架的移动应用开发工具。基于该开发工具,用户可以使用JavaScript开发语言,开发出在Android和IOS操作系统下运行的原生移动GIS应用,入门门槛低,一次开发,处处运行。
957 lines (876 loc) • 36 kB
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: MapControl.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: MapControl.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>/*********************************************************************************
Copyright © SuperMap. All rights reserved.
Author: Will
E-mail: pridehao@gmail.com
**********************************************************************************/
const LONGPRESS_EVENT = "com.supermap.RN.Mapcontrol.long_press_event";
import { NativeModules,DeviceEventEmitter,NativeEventEmitter,Platform } from 'react-native';
let MC = NativeModules.JSMapControl;
import Map from './Map.js';
import Navigation2 from './IndustryNavi.js';
import TraditionalNavi from './TraditionalNavi';
import GeoPoint from './GeoPoint.js';
import GeoRegion from './GeoRegion.js';
import GeoLine from './GeoLine.js';
import Geometry from './Geometry.js';
import Layer from './Layer.js';
const nativeEvt = new NativeEventEmitter(MC);
/**
* @class MapControl
* @property {object} ACTION - PAN:地图漫游。
VERTEXADD:在可编辑图层中为对象添加节点。
VERTEXDELETE:在可编辑图层中为对象删除节点。
SELECT:在对象上点击,选择对象。
VERTEXEDIT:在可编辑图层中编辑对象的节点。
CREATEPOINT:在可编辑图层上点击式绘点。
CREATEPOLYLINE:在可编辑图层中点击式绘直线。
CREATEPOLYGON:在可编辑图层中点击式绘多边形。
*/
export default class MapControl{
/**
* 返回在地图控件中显示的地图对象。
* @memberOf MapControl
* @returns {Promise.<Map>}
*/
async getMap(){
try{
var {mapId} =await MC.getMap(this._SMMapControlId);
var map = new Map();
map._SMMapId = mapId;
return map;
}catch(e){
console.error(e);
}
}
/**
* 设置地图控件中地图的当前操作状态。
* @memberOf MapControl
* @param {number} actionType
* @returns {Promise.<void>}
*/
async setAction(actionType){
try{
await MC.setAction(this._SMMapControlId,actionType);
}catch(e){
console.error(e);
}
}
/**
* 提交操作,对于采集而言,该接口将把采集的新几何对象写入到数据集,对于编辑,则是更新数据集中的正在编辑的对象。
* @memberOf MapControl
* @returns {Promise.<Promise|*|{phasedRegistrationNames}>}
*/
async submit(){
try{
var submited = await MC.submit(this._SMMapControlId);
return submited;
}catch (e){
console.error(e);
}
}
/**
* 监听编辑行为的变更事件
* @memberOf MapControl
* @param {function} actionChange 编辑行为变更函数,回调事件参数:e:newAction,e:oldAction
*/
async addActionChangedListener(actionChange){
try{
DeviceEventEmitter.addListener('ActionChange', function(e) {
actionChange && actionChange(e);
});
if(typeof actionChange == "function"){
await MC.addActionChangedListener(this.mapControlId);
}else{
throw new Error("addActionChangedListener need a callback function as first argument!");
}
}catch (e){
console.error(e);
}
}
/**
* 移除动作变更监听器。
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async removeActionChangedListener(actionChange){
try{
await MC.removeActionChangedListener(this._SMMapControlId);
}catch (e){
console.error(e);
}
}
/**
* 监听导航事件
* @memberOf MapControl
* @param {object} events - 传入一个对象作为参数,该对象可以包含两个属性:longPressHandler和scrollHandler。两个属性的值均为function类型,分部作为长按与滚动监听事件的处理函数。
* @returns {Promise.<void>}
*/
async setGestureDetector(handlers){
try{
if(handlers){
await MC.setGestureDetector(this._SMMapControlId);
}else{
throw new Error("setGestureDetector need callback functions as first two argument!");
}
//差异化
if(Platform.OS === 'ios'){
if(typeof handlers.longPressHandler === "function"){
nativeEvt.addListener("com.supermap.RN.Mapcontrol.long_press_event",function (e) {
// longPressHandler && longPressHandler(e);
handlers.longPressHandler(e);
});
}
if(typeof handlers.scrollHandler === "function"){
nativeEvt.addListener('com.supermap.RN.Mapcontrol.scroll_event',function (e) {
scrollHandler && scrollHandler(e);
});
}
}else{
if(typeof handlers.longPressHandler === "function"){
DeviceEventEmitter.addListener("com.supermap.RN.Mapcontrol.long_press_event",function (e) {
// longPressHandler && longPressHandler(e);
handlers.longPressHandler(e);
});
}
if(typeof handlers.scrollHandler === "function"){
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.scroll_event',function (e) {
scrollHandler && scrollHandler(e);
});
}
}
}catch (e){
console.error(e);
}
}
async deleteGestureDetector(){
try{
await MC.deleteGestureDetector(this._SMMapControlId)
}catch (e){
console.error(e);
}
}
/**
* 监听地图参数变化,分别由边界变化sizeChanged,比例尺变化scaleChanged,角度变化angleChanged,中心点变化boundsChanged(iOS目前只支持比例尺变化监听与中心点变化监听)。
* @memberOf MapControl
* @param events 该对象有下面四个函数类型的属性分别处理四种监听事件
* @description events: {boundsChanged:fun(){},scaleChanged:fun(){},angleChanged:fun(){},sizeChanged:fun(){}}
*/
async setMapParamChangedListener(events){
try{
boundsChanged = events.boundsChanged;
scaleChanged = events.scaleChanged;
angleChanged = events.angleChanged;
sizeChanged = events.sizeChanged;
var success = await MC.setMapParamChangedListener(this._SMMapControlId);
console.debug("Listening map parameters changed.");
if(!success) return;
//差异化处理
if(Platform.OS === 'ios'){
nativeEvt.addListener('Supermap.MapControl.MapParamChanged.BoundsChanged',function (e) {
if(typeof boundsChanged == 'function'){
events.boundsChanged(e);
}else{
console.error("Please set a callback to the property 'boundsChanged' in the first argument.");
}
});
nativeEvt.addListener('Supermap.MapControl.MapParamChanged.ScaleChanged',function (e) {
if(typeof events.scaleChanged == 'function'){
events.scaleChanged(e);
}else{
console.error("Please set a callback to the property 'scaleChanged' in the first argument.");
}
});
return
}
DeviceEventEmitter.addListener('Supermap.MapControl.MapParamChanged.BoundsChanged',function (e) {
if(typeof boundsChanged == 'function'){
events.boundsChanged(e);
}else{
console.error("Please set a callback to the property 'boundsChanged' in the first argument.");
}
});
DeviceEventEmitter.addListener('Supermap.MapControl.MapParamChanged.ScaleChanged',function (e) {
if(typeof events.scaleChanged == 'function'){
events.scaleChanged(e);
}else{
console.error("Please set a callback to the property 'scaleChanged' in the first argument.");
}
});
DeviceEventEmitter.addListener('Supermap.MapControl.MapParamChanged.AngleChanged',function (e) {
if(typeof events.angleChanged == 'function' ){
events.angleChanged(e);
}else {
console.error("Please set a callback to the property 'angleChanged' in the first argument.");
}
});
DeviceEventEmitter.addListener('Supermap.MapControl.MapParamChanged.SizeChanged',function (e) {
if(typeof events.sizeChanged == 'function' ){
events.sizeChanged(e);
}else {
console.error("Please set a callback to the property 'sizeChanged' in the first argument.");
}
});
}catch(e){
console.error(e);
}
}
/**
* 地图刷新监听器
* @memberOf MapControl
* @param {function} callback - 刷新处理回调函数
* @returns {Promise.<void>}
*/
async setRefreshListener(callback){
try{
var success = await MC.setRefreshListener(this._SMMapControlId);
console.log("MapControl:test result:",success);
if(success){
DeviceEventEmitter.addListener("com.supermap.RN.Mapcontrol.refresh_event",function (e) {
// console.log("MapControl:监听到地图刷新");
if(typeof callback == 'function'){
callback(e);
}else{
console.error("Please set a callback function as the first argument.");
}
});
}
}catch(e){
console.error(e);
}
}
/**
* 获得当前Geometry几何对象
* @memberOf MapControl
* @returns {Promise.<GeoPoint|GeoLine|GeoRegion|Geometry>}
*/
async getCurrentGeometry(){
try{
var {geometryId,geoType} = await MC.getCurrentGeometry(this._SMMapControlId);
if(geoType == "GeoPoint"){
var geoPoint = new GeoPoint();
geoPoint._SMGeoPointId = geometryId;
}else if(geoType == "GeoRegion"){
var geoRegion = new GeoRegion();
geoRegion._SMGeoRegionId = geometryId;
}else if(geoType == "GeoLine"){
var geoLine = new GeoLine();
geoLine._SMGeoLineId = geometryId;
}else{
var geometry = new Geometry();
geometry._SMGeometryId = geometryId;
}
return geoPoint || geoLine || geoRegion || geometry;
}catch (e){
console.error(e);
}
}
/**
* 获取导航控件
* @memberOf MapControl
* @returns {Promise.<Navigation2>}
*/
async getIndustryNavi(){
try{
var {navigation2Id} = await MC.getNavigation2(this._SMMapControlId);
var navigation2 = new Navigation2();
navigation2._SMNavigation2Id = navigation2Id;
return navigation2;
}catch (e){
console.error(e);
}
}
/**
* 设置横竖屏切换监听器。
* @memberOf MapControl
* @param {object} events - 传入一个对象作为参数,该对象可以包含两个属性:toHorizontalScreen和toVerticalScreen。两个属性的值均为function类型,分部作为横屏与竖屏监听事件的处理函数。
* @returns {Promise.<void>}
*/
async setConfigurationChangedListener(events){
try{
var success = await MC. setConfigurationChangedListener();
if(!success) return ;
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.to_horizontal_screen',function (e) {
if(typeof events.toHorizontal_screen == 'function'){
events.toHorizontalScreen();
}else{
console.error("Please set a callback to the property 'toHorizontalScreen' in the first argument.");
}
});
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.to_verticalscreen',function (e) {
if(typeof events.toVerticalScreen == 'function'){
events.toVerticalScreen();
}else{
console.error("Please set a callback to the property 'toVerticalScreen' in the first argument.");
}
});
}catch (e){
console.error(e);
}
}
/**
* 获得传统导航控件
* @memberOf MapControl
* @returns {Promise.<TraditionalNavi>}
*/
async getTraditionalNavi(){
try{
var {traditionalNaviId} = await MC.getTraditionalNavi(this._SMMapControlId);
var traditionalNavi= new TraditionalNavi();
traditionalNavi._SMTraditionalNaviId = traditionalNaviId;
return traditionalNavi;
}catch (e){
console.error(e);
}
}
/**
* 返回地图控件中地图的当前操作状态。
* @memberOf MapControl
* @returns {Promise.<string>}
*/
async getAction(){
try{
var {actionType} = await MC.getAction(this._SMMapControlId);
for( p in this.ACTION){
if(this.ACTION[p] === actionType){
console.log("MapControl.js:"+p);
return p;
}else{
throw new Error("Unknown Type");
}
}
}catch (e){
console.error(e);
}
}
/**
* 地图窗口上恢复上一步的操作。
* @memberOf MapControl
* @returns {Promise.<boolean>}
*/
async redo(){
try{
var {redone} = await MC.redo(this._SMMapControlId);
return redone;
}catch (e){
console.error(e);
}
}
/**
* 地图控件上撤消上一次的操作。
* @memberOf MapControl
* @returns {Promise.<boolean>}
*/
async undo(){
try{
var {undone} = await MC.undo(this._SMMapControlId);
return undone;
}catch (e){
console.error(e);
}
}
/**
* 取消操作,对于采集而言,新建的未提交的数据将被清除,对于编辑,将回到上一次提交保存的状态。
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async cancel(){
try{
var {canceled} = await MC.cancel(this._SMMapControlId);
return canceled;
}catch (e){
console.error(e);
}
}
/**
* 删除当前绘制出来的几何对象。
* @memberOf MapControl
* @returns {Promise.<Promise.deleted>}
*/
async deleteCurrentGeometry(){
try{
var {deleted} = await MC.deleteCurrentGeometry(this._SMMapControlId);
return deleted;
}catch (e){
console.error(e);
}
}
/**
* 获取当前编辑图层
* @memberOf MapControl
* @returns {Promise.<object>}
*/
async getEditLayer(){
try{
var {layerId} = await MC.getEditLayer(this._SMMapControlId);
var layer = new Layer();
layer._SMLayerId = layerId;
return layer;
}catch (e){
console.error(e);
}
}
/**
* 添加对象删除完成监听器。
* @memberOf MapControl
* @param {object} event
* @description event:{geometryDeleted: e => {...}} e:{layer:--, id:--,canceled:--} layer:操作的图层,被删除对象id,删除结果canceled,ture为删除成功,否则为false.
* @returns {Promise.<boolean>}
*/
async addGeometryDeletedListener(event){
try{
var success = await MC.addGeometryDeletedListener(this._SMMapControlId);
if(!success) return ;
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.geometry_deleted',function (e) {
if(typeof event.geometryDeleted === 'function'){
var layer = new Layer();
layer._SMLayerId = e.layerId;
e.layer = layer;
event.geometryDeleted(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
return success;
}catch (e){
console.error(e);
}
}
/**
* 移除对象删除完成监听器
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async removeGeometryDeletedListener(){
try{
await MC. removeGeometryDeletedListener(this._SMMapControlId);
}catch (e){
console.error(e);
}
}
/**
* 添加对象添加监听器
* @memberOf MapControl
* @param {object} event - event:{geometryAdded: e => {...}} e:{layer:--, id:--,canceled:--} layer:操作的图层,操作对象id,操作结果canceled,ture为操作成功,否则为false.
* @returns {Promise.<*>}
*/
async addGeometryAddedListener(event){
try{
var success = await MC.addGeometryAddedListener(this._SMMapControlId);
if(!success) return ;
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.grometry_added',function (e) {
if(typeof event.geometryAdded === 'function'){
var layer = new Layer();
layer._SMLayerId = e.layerId;
e.layer = layer;
event.geometryAdded(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
return success;
}catch (e){
console.error(e);
}
}
/**
* 移除对象添加监听器。
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async removeGeometryAddedListener(){
try{
await MC. removeGeometryAddedListener(this._SMMapControlId);
}catch (e){
console.error(e);
}
}
/**
* 添加对象删除完成前监听器。
* @memberOf MapControl
* @param {object} event - event:{geometryDeleting: e => {...}} e:{layer:--, id:--,canceled:--} layer:操作的图层,操作对象id,操作结果canceled,ture为操作成功,否则为false.
* @returns {Promise.<*>}
*/
async addGeometryDeletingListener(event){
try{
var success = await MC.addGeometryDeletingListener(this._SMMapControlId);
if(!success) return ;
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.geometry_deleting',function (e) {
if(typeof event.geometryDeleting === 'function'){
var layer = new Layer();
layer._SMLayerId = e.layerId;
e.layer = layer;
event.geometryDeleting(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
return success;
}catch (e){
console.error(e);
}
}
/**
* 移除对象删除完成前监听器。
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async removeGeometryDeletingListener(){
try{
await MC. removeGeometryDeletingListener(this._SMMapControlId);
}catch (e){
console.error(e);
}
}
/**
* 添加对象修改完成监听器
* @memberOf MapControl
* @param {object} event - event:{geometryModified: e => {...}} e:{layer:--, id:--,canceled:--} layer:操作的图层,操作对象id,操作结果canceled,ture为操作成功,否则为false.
* @returns {Promise.<*>}
*/
async addGeometryModifiedListener(event){
try{
var success = await MC.addGeometryModifiedListener(this._SMMapControlId);
if(!success) return ;
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.geometry_modified',function (e) {
if(typeof event.geometryModified === 'function'){
var layer = new Layer();
layer._SMLayerId = e.layerId;
e.layer = layer;
event.geometryModified(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
return success;
}catch (e){
console.error(e);
}
}
/**
* 移除对象删除完成前监听器。
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async removeGeometryModifiedListener(){
try{
await MC. removeGeometryModifiedListener(this._SMMapControlId);
}catch (e){
console.error(e);
}
}
/**
* 添加对象修改前监听器
* @memberOf MapControl
* @param event - event:{geometryModifying: e => {...}} e:{layer:--, id:--,canceled:--} layer:操作的图层,操作对象id,操作结果canceled,ture为操作成功,否则为false.
* @returns {Promise.<*>}
*/
async addGeometryModifyingListener(event){
try{
var success = await MC.addGeometryModifyingListener(this._SMMapControlId);
if(!success) return ;
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.geometry_modifying',function (e) {
if(typeof event.geometryModifying === 'function'){
var layer = new Layer();
layer._SMLayerId = e.layerId;
e.layer = layer;
event.geometryModifying(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
return success;
}catch (e){
console.error(e);
}
}
/**
* 移除对象修改完成监听器。
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async removeGeometryModifyingListener(){
try{
await MC. removeGeometryModifyingListener(this._SMMapControlId);
}catch (e){
console.error(e);
}
}
/**
* 添加对象修改前监听器
* @memberOf MapControl
* @param events
* @description events:{geometrySelected: e => {...},geometryMultiSelected e => {...}}
geometrySelected 单个集合对象被选中事件的回调函数,参数e为获取结果 e:{layer:--, id:--} layer:操作的图层,操作对象id。geometryMultiSelected 多个集合对象被选中事件的回调函数,参数e为获取结果数组:e:{geometries:[layer:--,id:--]}
* @returns {Promise.<*>}
*/
async addGeometrySelectedListener(events){
try{
var success = await MC.addGeometrySelectedListener(this._SMMapControlId);
if(!success) return ;
//差异化
if(Platform.OS === 'ios'){
nativeEvt.addListener('com.supermap.RN.Mapcontrol.geometry_selected',function (e) {
if(typeof events.geometrySelected === 'function'){
var layer = new Layer();
layer._SMLayerId = e.layerId;
e.layer = layer;
events.geometrySelected(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
nativeEvt.addListener('com.supermap.RN.Mapcontrol.geometry_multi_selected',function (e) {
if(typeof events.geometryMultiSelected === 'function'){
e.geometries.map(function (geometry) {
var layer = new Layer();
layer._SMLayerId = geometry.layerId;
geometry.layer = layer;
})
events.geometryMultiSelected(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
}else{
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.geometry_selected',function (e) {
if(typeof events.geometrySelected === 'function'){
var layer = new Layer();
layer._SMLayerId = e.layerId;
e.layer = layer;
events.geometrySelected(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.geometry_multi_selected',function (e) {
if(typeof events.geometryMultiSelected === 'function'){
e.geometries.map(function (geometry) {
var layer = new Layer();
layer._SMLayerId = geometry.layerId;
geometry.layer = layer;
})
events.geometryMultiSelected(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
}
return success;
}catch (e){
console.error(e);
}
}
/**
* 移除对象选中监听器。
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async removeGeometrySelectedListener(){
try{
await MC. removeGeometrySelectedListener(this._SMMapControlId);
}catch (e){
console.error(e);
}
}
/**
* 添加对象修改前监听器
* @memberOf MapControl
* @param events
* @description events:{lengthMeasured: e => {...},areaMeasured: e => {...},e => {...},angleMeasured: e => {...}}
* lengthMeasured 长度量算结果。 e:{curResult:--, curPoint:{x:--,y--}
* areaMeasured 面积量算结果。 e:{curResult:--, curPoint:{x:--,y--}
* angleMeasured 测量角度结果 通过设置Action.MEASUREANGLE实现测量角度。 e:{curAngle:--, curPoint:{x:--,y--}
* @returns {Promise.<*>}
*/
async addMeasureListener(events){
try{
var success = await MC.addGeometryModifyingListener(this._SMMapControlId);
if(!success) return ;
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.length_measured',function (e) {
if(typeof events.lengthMeasured === 'function'){
events.lengthMeasured(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.area_measured',function (e) {
if(typeof events.areaMeasured === 'function'){
events.areaMeasured(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.angle_measured',function (e) {
if(typeof events.angleMeasured === 'function'){
events.angleMeasured(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
return success;
}catch (e){
console.error(e);
}
}
/**
* 移除量算监听器。
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async removeMeasureListener(){
try{
await MC. removeMeasureListener(this._SMMapControlId);
}catch (e){
console.error(e);
}
}
/**
* 设置Undo监听器。
* @memberOf MapControl
* @param event
* @description event:{undoStateChange: e => {...}} e:{canUndo:--,canRedo:--} 返回参数canUndo表示是否可取消,canRedo表示是否可重复
* @returns {Promise.<*>}
*/
async addUndoStateChangeListener(event){
try{
var success = await MC.addUndoStateChangeListener(this._SMMapControlId);
if(!success) return ;
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.undo_state_change',function (e) {
if(typeof event.undoStateChange === 'function'){
event.undo_state_change(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
return success;
}catch (e){
console.error(e);
}
}
/**
* 移除Undo监听器。
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async removeUndoStateChangeListener(){
try{
await MC.removeUndoStateChangeListener(this._SMMapControlId);
}catch (e){
console.error(e);
}
}
/**
* 设置编辑状态监听器。
* @memberOf MapControl
* @param events
* @description events:{addNodeEnable: e => {...},deleteNodeEnable: e => {...}}
* addNodeEnable: 添加节点有效。e:{isEnable:--}
* deleteNodeEnable: 删除节点有效。 e:{isEnable:--}
* @returns {Promise.<*>}
*/
async setEditStatusListener(events){
try{
var success = await MC.setEditStatusListener(this._SMMapControlId);
if(!success) return ;
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.add_node_enable',function (e) {
if(typeof events.addNodeEnable === 'function'){
events.addNodeEnable(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
DeviceEventEmitter.addListener('com.supermap.RN.Mapcontrol.delete_node_enable',function (e) {
if(typeof events.deleteNodeEnable === 'function'){
events.deleteNodeEnable(e);
}else{
console.error("Please set a callback to the first argument.");
}
});
return success;
}catch (e){
console.error(e);
}
}
/**
* 添加、删除节点事件的监听器。
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async removeEditStatusListener(){
try{
await MC.removeEditStatusListener(this._SMMapControlId);
}catch (e){
console.error(e);
}
}
/**
* 添加标绘库。
* @memberOf MapControl
* @returns {Promise.<int>}
*/
async addPlotLibrary(url){
try{
var libId = await MC.addPlotLibrary(this._SMMapControlId,url);
return libId;
}catch (e){
console.error(e);
}
}
/**
* 添加标绘库。
* @memberOf MapControl
* @returns {Promise.<void>}
*/
async removePlotLibrary(libId){
try{
var isRemove = await MC.removePlotLibrary(this._SMMapControlId,libId);
}catch (e){
console.error(e);
}
}
/**
* 设置标绘图案。
* @memberOf MapControl
* @returns {Promise.<int>}
*/
async setPlotSymbol(libId,symbolCode){
try{
var isSet = await MC.setPlotSymbol(this._SMMapControlId,libId,symbolCode);
}catch (e){
console.error(e);
}
}
}
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="BufferAnalyst.html">BufferAnalyst</a></li><li><a href="BufferAnalystParameter.html">BufferAnalystParameter</a></li><li><a href="DataDownloadService.html">DataDownloadService</a></li><li><a href="Dataset.html">Dataset</a></li><li><a href="DatasetVector.html">DatasetVector</a></li><li><a href="DatasetVectorInfo.html">DatasetVectorInfo</a></li><li><a href="Datasource.html">Datasource</a></li><li><a href="DatasourceConnectionInfo.html">DatasourceConnectionInfo</a></li><li><a href="DataUploadService.html">DataUploadService</a></li><li><a href="Feature.html">Feature</a></li><li><a href="FeatureSet.html">FeatureSet</a></li><li><a href="GeoLine.html">GeoLine</a></li><li><a href="Geometry.html">Geometry</a></li><li><a href="GeoPoint.html">GeoPoint</a></li><li><a href="GeoRegion.html">GeoRegion</a></li><li><a href="GeoStyle.html">GeoStyle</a></li><li><a href="Layer.html">Layer</a></li><li><a href="LayerSetting.html">LayerSetting</a></li><li><a href="LayerSettingVector.html">LayerSettingVector</a></li><li><a href="LocationManager.html">LocationManager</a></li><li><a href="Map.html">Map</a></li><li><a href="MapControl.html">MapControl</a></li><li><a href="MapView.html">MapView</a></li><li><a href="Navigation2.html">Navigation2</a></li><li><a href="OverlayAnalyst.html">OverlayAnalyst</a></li><li><a href="OverlayAnalystParameter.html">OverlayAnalystParameter</a></li><li><a href="Point.html">Point</a></li><li><a href="Point2D.html">Point2D</a></li><li><a href="QueryParameter.html">QueryParameter</a></li><li><a href="QueryService.html">QueryService</a></li><li><a href="Rectangle2D.html">Rectangle2D</a></li><li><a href="Scene.html">Scene</a></li><li><a href="Selection.html">Selection</a></li><li><a href="ServiceBase.html">ServiceBase</a></li><li><a href="ServiceQueryParameter.html">ServiceQueryParameter</a></li><li><a href="Size2D.html">Size2D</a></li><li><a href="Theme.html">Theme</a></li><li><a href="Track.html">Track</a></li><li><a href="TrackingLayer.html">TrackingLayer</a></li><li><a href="TraditionalNavi.html">TraditionalNavi</a></li><li><a href="Workspace.html">Workspace</a></li><li><a href="WorkspaceConnectionInfo.html">WorkspaceConnectionInfo</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.3</a> on Tue Aug 01 2017 16:16:49 GMT+0800 (CST)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>