首页 > 其他分享 >React Native for Arcgis 地图开发 GraphicCtrl (十三)

React Native for Arcgis 地图开发 GraphicCtrl (十三)

时间:2022-11-05 14:04:10浏览次数:59  
标签:changeContent const changeErrorContent MapId GraphicCtrl React Arcgis any

GraphicCtrl 的使用
import React, {useState, useEffect} from ‘react’;
import {View, Text, ScrollView, StyleSheet} from ‘react-native’;
import {Button, List, Switch} from ‘@ant-design/react-native’;
import {GraphicCtrl, GraphicLayerCtrl, LayerManager, MapManager, MapView} from ‘@haibalai/react-native-arcgis’;
import {connect} from ‘react-redux’;
import WidthDrawer from ‘…/…/…/…/components/WithDrawer/index’;
import {Colors} from ‘react-native/Libraries/NewAppScreen’;
const MapId = ‘baseMap’;
const GraphicLayerId = ‘graphic点’;
const MapImageLayerId = ‘水闸-MapImageLayer’;
const FeatureLayerId = ‘水闸-featurelayer’;
const MapImageLayerIds = [
‘水闸-MapImageLayer’,
‘原水管线-MapImageLayer’,
‘海堤-MapImageLayer’,
‘海洋环境区划-MapImageLayer’,
];
const FeatureLayerIds = [
‘水闸-featurelayer’,
‘原水管线-featurelayer’,
‘原水管线-featurelayer’,
‘海洋环境区划-featurelayer’,
];
const GraphicLayerIds = [‘graphic点’, ‘graphic线’, ‘graphic面’];
const GeoX = 1.2664272368526626e7;
const GeoY = 2595847.2157473154;
const Geo4490X = 113.78868474700005;
const Geo4490Y = 22.693641836999973;
const layerName = ‘test’;
const graphicStrs = [
{geometry: {type: ‘point’, x: 113.868676, y: 22.487838, z: 0, spatialReference: {wkid: 4326}}},
{geometry: {type: ‘point’, x: 113.768676, y: 22.587838, z: 0, spatialReference: {wkid: 4326}}},
{geometry: {type: ‘point’, x: 113.868676, y: 22.587838, z: 0, spatialReference: {wkid: 4326}}},
];
let graphicId = ‘’;
let graphicIds = [‘’];
const symbolStr = {
angle: 0,
color: [40, 135, 255, 255],
outline: {color: [14, 98, 230, 255], style: ‘solid’, type: ‘esriSLS’, width: 1.5},
size: 9,
style: ‘circle’,
type: ‘esriSMS’,
xoffset: 0,
yoffset: 0,
};
const selected = true;
const visible = true;
const geometryStr = ‘’;
const attributesStr = ‘’;
const zIndex = 1;
/** sideBar组件
*@param {*} renderCb renderCb是一个函数, 每次触发并且向里面传值(对象),content组件就以sideBarData的属性去接受
*/
const SideBar = ({renderCb, Home}: any) => {
const [content, changeContent] = useState(‘’);
const [errorContent, changeErrorContent] = useState(‘’);
const [singleMapImageLayerStatus, setSingleMapImageLayerStatus] = useState(false);
const [multiMapImageLayerStatus, setMultiMapImageLayerStatus] = useState(false);
const [singleFeatureLayerStatus, setSingleFeatureStatus] = useState(false);
const [multiFeatureLayerStatus, setMultiFeatureLayerStatus] = useState(false);
const [singleGraphicLayerStatus, setSingleGraphicLayerStatus] = useState(false);
const [multiGraphicLayerStatus, setMultiGraphicLayerStatus] = useState(false);
useEffect(() => {
renderCb({content, errorContent});
}, [content, errorContent, renderCb]);
const getGeoX = () => {
let coordinate = Home.coordinate;
if (coordinate === ‘4490’) {
return Geo4490X;
} else {
return GeoX;
}
};
const getGeoY = () => {
let coordinate = Home.coordinate;
if (coordinate === ‘4490’) {
return Geo4490Y;
} else {
return GeoY;
}
};
const onSwitchSingleMapImageLayer = (e: boolean) => {
if (e) {
LayerManager.showLayer(MapId, MapImageLayerId);
} else {
LayerManager.hideLayer(MapId, MapImageLayerId);
}
setSingleMapImageLayerStatus(e);
};
const onSwitchMultiMapImageLayer = (e: boolean) => {
if (e) {
LayerManager.showLayers(MapId, MapImageLayerIds);
} else {
LayerManager.hideLayers(MapId, MapImageLayerIds);
}
setMultiMapImageLayerStatus(e);
};
const onSwitchSingleFeatureLayer = (e: boolean) => {
if (e) {
LayerManager.showLayer(MapId, FeatureLayerId);
} else {
LayerManager.hideLayer(MapId, FeatureLayerId);
}
setSingleFeatureStatus(e);
};
const onSwitchMultiFeatureLayer = (e: boolean) => {
if (e) {
LayerManager.showLayers(MapId, FeatureLayerIds);
} else {
LayerManager.hideLayers(MapId, FeatureLayerIds);
}
setMultiFeatureLayerStatus(e);
};
const onSwitchSingleGraphicLayer = (e: boolean) => {
setSingleGraphicLayerStatus(e);
//加载单个图层的graphics
};
const onSwitchMultiGraphicLayer = (e: boolean) => {
setMultiGraphicLayerStatus(e);
//加载多个图层的graphics
};
const onAddGraphics = () => {
GraphicLayerCtrl.addGraphics(MapId, layerName, graphicStrs)
.then((r: any) => {
graphicIds = r;
graphicId = graphicIds[0];
changeErrorContent(‘’);
changeContent®;
})
.catch((e: any) => {
changeErrorContent(e);
});
};
const onRemoveGraphic = () => {
GraphicCtrl.removeGraphic(graphicId)
.then((r: any) => {
changeErrorContent(‘’);
changeContent®;
})
.catch((e: any) => {
changeErrorContent(e);
});
};
const onRemoveGraphics = () => {
GraphicCtrl.removeGraphics(graphicIds)
.then((r: any) => {
changeErrorContent(‘’);
changeContent®;
})
.catch((e: any) => {
changeErrorContent(e);
});
};
const onGetSymbol = () => {
GraphicCtrl.getSymbol(graphicId)
.then((r: any) => {
changeErrorContent(‘’);
changeContent®;
})
.catch((e: any) => {
changeErrorContent(e);
});
};
const onSetSymbol = () => {
GraphicCtrl.setSymbol(graphicId, symbolStr)
.then((r: any) => {
changeErrorContent(‘’);
changeContent®;
})
.catch((e: any) => {
changeErrorContent(e);
});
};
const onIsSelected = () => {
GraphicCtrl.isSelected(graphicId)
.then((r: any) => {
changeErrorContent(‘’);
changeContent(r.toString());
})
.catch((e: any) => {
changeErrorContent(e);
});
};
const onSetSelected = () => {
GraphicCtrl.setSelected(graphicId, selected)
.then((r: any) => {
changeErrorContent(‘’);
changeContent®;
})
.catch((e: any) => {
changeErrorContent(e);
});
};
const onIsVisible = () => {
GraphicCtrl.isVisible(graphicId)
.then((r: any) => {
changeErrorContent(‘’);
changeContent(r.toString());
})
.catch((e: any) => {
changeErrorContent(e);
});
};
const onSetVisible = () => {
GraphicCtrl.setVisible(graphicId, visible)
.then((r: any) => {
changeErrorContent(‘’);
changeContent®;
})
.catch((e: any) => {
changeErrorContent(e);
});
};
const onGetAttributes = () => {React Native for Arcgis 地图开发 - 小专栏

标签:changeContent,const,changeErrorContent,MapId,GraphicCtrl,React,Arcgis,any
From: https://blog.51cto.com/u_15142957/5825945

相关文章

  • React Native for Arcgis 地图开发 LocationDisplayCtrl (十四)
    定位展示LocationDisplayCtrl封装importReact,{useState,useEffect}from‘react’;import{View,Text,ScrollView,StyleSheet,DeviceEventEmitter}from‘react......
  • web3-react基本用法
    背景:web3真会玩,除了web3js,etherjs外,又搞出来一个web3-react,看不懂原来是知识盲区。 唤起metamask只需要一个activate方法const{activate}=useWeb3React();cons......
  • react组件传值
    1.父传子1.1父组件准备数据,父组件通过属性age直接传递给子组件父importReact,{useState}from'react'importChildsfrom'./Childs'exportdefaultfunctio......
  • 前端框架学习react还是vue?
    究竟如何正确使用?作为小白的我们从何学起比较好?带着一系列问题来看看吧。这篇主要介绍:1、从出身背景、优势、缺点、适合场景、开发模式、实践情况进行对比2、相似之处......
  • React Markdown Documentation Generator All In One
    ReactMarkdownDocumentationGeneratorAllInOneSSGhttps://github.com/topics/static-site-generatornext.jshttps://github.com/vercel/next.jsgatsbyhttps:......
  • react生命周期(详细版)
    首先生命周期分为三个阶段:挂载:已经插入真实dom渲染(更新):正在被重新渲染卸载:已经移出真实dom一、挂载:在组件实例被创建并插入到dom中时,生命周期调用顺序......
  • ArcGIS JS API 添加要素图层 点击时获取图层属性
    //需要引入:"esri/layers/FeatureLayer"模块//要素图层被点击时弹出图层属性的模板定义{为字段}varTuCeng03TC={"title":"ID:{objectid}",......
  • 细说React组件性能优化
    React组件性能优化最佳实践React组件性能优化的核心是减少渲染真实DOM节点的频率,减少VirtualDOM比对的频率。如果子组件未发生数据改变不渲染子组件。组件卸载前......
  • React-Hook最佳实践
    ReactHook新出现背景类组件的问题复用组件状态难,高阶组件+渲染属性providerscustomers,等一堆工具都是为了解决这个问题,但是造成了很严重的理解成本和组件嵌套地狱......
  • 详解React的Transition工作原理原理
    Transition使用姿势Transition是react18引入的新概念,用来区分紧急和非紧急的更新。紧急的更新,指的是一些直接的用户交互,如输入、点击等;非紧急的更新,指的是UI界面......