arcgis js 动态绘制白膜

2024-04-13 05:12
文章标签 动态 arcgis js 绘制 白膜

本文主要是介绍arcgis js 动态绘制白膜,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

arcgis动态绘制白膜

export default {name: 'ControlHeight',data () {return {offsetHeight: 350,limitHeight: 100, // 限高高度opacity: 0,color: '#409EFF',currPolygon: null,polygonLayerList: [],polygonData: [],currChangedOpacity: 0,polygonNum: 0}},methods: {draw () {const self = thisself.map.container.style.cursor = 'crosshair'let arr = []//   self.map.graphics.remove(self.currPolygon)const controlHeightGraphicLayer = new self.GraphicsLayer({// graphics: [graphic],elevationInfo: {mode: 'absolute-height',// 偏移offset: self.offsetHeight,unit: 'meters'}// screenSizePerspectiveEnabled: true})self.clickEvent = self.map.on('click', evt => {arr.push([evt.mapPoint.longitude, evt.mapPoint.latitude])})self.moveEvent = self.map.on('pointer-move', evt => {if (arr.length > 0) {//   self.map.graphics.remove(self.currPolygon)controlHeightGraphicLayer.graphics.remove(self.currPolygon)const mapPoint = self.map.toMap({ x: evt.x, y: evt.y })let arr2 = []arr.forEach(res => {arr2.push(res)})arr2.push([mapPoint.longitude, mapPoint.latitude])arr2.push(arr[0])const graphic = new self.Graphic({geometry: new self.Polygon({//   hasZ: true,//   hasM: false,rings: [arr2],spatialReference: self.map.spatialReference}),symbol: {type: 'polygon-3d', // 'simple-fill',symbolLayers: [{type: 'extrude',size: self.limitHeight,material: {color: self.color// opacity: (100 - self.opacity) / 100}}]//   color: [ 0, 255, 0, 0.2],//   style: 'solid',//   outline: {//     color: 'white',//     width: 1//   }}})controlHeightGraphicLayer.elevationInfo.offset = self.offsetHeightcontrolHeightGraphicLayer.opacity = (100 - self.opacity) / 100controlHeightGraphicLayer.graphics.add(graphic)//   self.map.graphics.add(graphic)self.map.map.add(controlHeightGraphicLayer)self.currPolygon = graphic}})self.dbclickEvent = self.map.on('double-click', evt => {evt.stopPropagation()self.map.container.style.cursor = 'default'self.clickEvent.remove()self.clickEvent = ''self.moveEvent.remove()self.moveEvent = ''self.dbclickEvent.remove()self.dbclickEvent = ''// console.log(self.currPolygon)// self.polygonLayerList.push(controlHeightGraphicLayer)self.polygonData.push({layer: controlHeightGraphicLayer,name: `模型_${self.polygonNum}`,opacity: self.opacity,edit: false})self.polygonNum++// self.geometry = self.polygonObj.geometry})},deleteGraphicer (row) {row.layer.removeAll()this.map.map.remove(row.layer)this.polygonData = this.polygonData.filter(item => item.layer !== row.layer)},editData (row) {row.edit = truethis.currChangedOpacity = row.opacity},saveData (row) {row.layer.opacity = (100 - row.opacity) / 100row.edit = false},cancelSaveData (row) {row.layer.opacity = (100 - this.currChangedOpacity) / 100row.edit = false},changeOpacity (row) {row.layer.opacity = (100 - row.opacity) / 100},close () {this.polygonNum = 0this.$emit('close')}},mounted () {let self = this// self.wkid = sysConfig.wkidmapManager.getMap(this.mapId).then(({ map }) => {self.map = mapesriLoader.loadModules(['esri/Map','esri/layers/GraphicsLayer','esri/widgets/Sketch/SketchViewModel','esri/Graphic','esri/geometry/Polygon'], { url: serverConfig.arcgis_js_api_url }).then(([Map, GraphicsLayer, SketchViewModel, Graphic, Polygon]) => {self.Map = Mapself.GraphicsLayer = GraphicsLayerself.SketchViewModel = SketchViewModelself.Graphic = Graphicself.Polygon = Polygon})})}
}

这篇关于arcgis js 动态绘制白膜的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/899220

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(