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

相关文章

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.