当前位置: 首页 > news >正文

ArcGIS for js 标记(vue代码)

一、引入依赖

import Graphic from "@arcgis/core/Graphic";
import GraphicsLayer from "@arcgis/core/layers/GraphicsLayer";
import Color from "@arcgis/core/Color";
import TextSymbol from "@arcgis/core/symbols/TextSymbol.js";
import SimpleMarkerSymbol from "@arcgis/core/symbols/SimpleMarkerSymbol";
import PictureMarkerSymbol from "@arcgis/core/symbols/PictureMarkerSymbol.js";
import Point from "@arcgis/core/geometry/Point.js";
// 引入本地图片作为标记图片
import pngImg from "../assets/vue.svg";

二、定义对象

// 文字标注属性
let textSymbol  = null;
let textGraphicLayer = null;
let textLayerId = "textSymbolLayer";
// 标记点属性
let markerSymbol = null;
let markerGraphicLayer = null;
let markerLayerId = "markerSymbolLayer";
// 图片标记属性
let picMarkerSymbol = null;
let picMarkerGraphicLayer = null;
let picMarkerLayerId = "picMarkerSymbolLayer";

三、方法

1、初始化

// 标注初始化
export const initMarker = ((view,map) =>{// 文字图层初始化textGraphicLayer = map.findLayerById(textLayerId)if (textGraphicLayer === null || textGraphicLayer === undefined) {textGraphicLayer = new GraphicsLayer({id: textLayerId})map.add(textGraphicLayer)}textGraphicLayer.removeAll() //清空上次绘制的线// 标记点图层初始化markerGraphicLayer = map.findLayerById(markerLayerId)if (markerGraphicLayer === null || markerGraphicLayer === undefined) {markerGraphicLayer = new GraphicsLayer({id: markerLayerId})map.add(markerGraphicLayer)}markerGraphicLayer.removeAll() //清空上次绘制的线// 图片标记图层初始化picMarkerGraphicLayer = map.findLayerById(picMarkerLayerId)if (picMarkerGraphicLayer === null || picMarkerGraphicLayer === undefined) {picMarkerGraphicLayer = new GraphicsLayer({id: picMarkerLayerId})map.add(picMarkerGraphicLayer)}picMarkerGraphicLayer.removeAll() //清空上次绘制的线});

2、文字标注方法

// 文字标注方法
export const initWordsMarker = ((view,map) => {initMarker(view,map);// 初始化if(map.layers.includes(markerGraphicLayer)||map.layers.includes(picMarkerGraphicLayer)){map.remove(markerGraphicLayer);// 移除标记点图层map.remove(picMarkerGraphicLayer);// 移除图片标记图层}// 文字textSymbol = new TextSymbol({text: "文字标注",font: "12px sans-serif",color: "blue",haloColor: new Color([255, 255, 0, 0.25]),haloSize: "1",xoffset: 0,yoffset: 10});// 获取焦点view.focus();// 文字位置点let wordPoint = null;// 点击地图事件view.on("click",function(event){wordPoint = {type: "point",// x: event.mapPoint.longitude,// y: event.mapPoint.latitude,x: event.mapPoint.x,y: event.mapPoint.y,spatialReference: view.spatialReference}// 创建图形对象,并添加文本let textGraphic = new Graphic({geometry: wordPoint,symbol: textSymbol,attributes: {name: "属性字段"}});// 添加textGraphicLayer.add(textGraphic);});});

3、标记点标注方法

// 标记点方法
export const initGraphMarker = ((view,map)=>{initMarker(view,map);// 初始化if(map.layers.includes(textGraphicLayer)||map.layers.includes(picMarkerGraphicLayer)){map.remove(textGraphicLayer);// 移除文字标注图层map.remove(picMarkerGraphicLayer);// 移除图片标记图层}// 标记点markerSymbol = new SimpleMarkerSymbol({color: "red",// 标记点颜色size: 12,// 标记x点大小style: "circle",// 标记点类型 - circle(圆点), cross(十字), diamond(菱形), path(正方形), square(矩形), triangle(三角形), x(x形)angle:0,// 选择角outline:{// 边框color: [0, 255, 0],width: 1},xoffset:0,// 正值向右yoffset:0// 正值向上});// 标记点位置点let markerPoint = null;// 点击地图事件view.on("click",function(event){markerPoint = {type: "point",// x: event.mapPoint.longitude,// y: event.mapPoint.latitude,x: event.mapPoint.x,y: event.mapPoint.y,spatialReference: view.spatialReference}// 创建标记点对象,并添加属性let markerGraphic = new Graphic({geometry: markerPoint,symbol: markerSymbol,attributes: {name: "属性字段"}});// 添加markerGraphicLayer.add(markerGraphic);});});

4、图片标记方法

// 图片标记方法
export const initPictureMarker = ((view,map) =>{initMarker(view,map);// 初始化if(map.layers.includes(textGraphicLayer)||map.layers.includes(markerGraphicLayer)){map.remove(textGraphicLayer);// 移除文字标注图层map.remove(markerGraphicLayer);// 移除标记点图层}// 图片标记点picMarkerSymbol = new PictureMarkerSymbol({// 网络图片//url:"https://static.arcgis.com/images/Symbols/Shapes/BlackStarLargeB.png",// 本地图片// url:pngImg,// 上面引入url:getImgUrl("star.png"),// 下面方法获取 width:"30px",height:"30px",angle:0,// 选择角xoffset:0,// 正值向右yoffset:0// 正值向上});// 标记点位置点let picMarkerPoint = null;// 点击地图事件view.on("click",function(event){picMarkerPoint = {type: "point",// x: event.mapPoint.longitude,// y: event.mapPoint.latitude,x: event.mapPoint.x,y: event.mapPoint.y,spatialReference: view.spatialReference}// 创建标记点对象,并添加属性let picMarkerGraphic = new Graphic({geometry: picMarkerPoint,symbol: picMarkerSymbol,attributes: {name: "属性字段"}});// 添加picMarkerGraphicLayer.add(picMarkerGraphic);});});// 引入本地图片方法
const getImgUrl = file => {return new URL(`../assets/${file}`, import.meta.url).href;};

5、清除方法

//清除
export const clearMarker = (() => {textGraphicLayer.removeAll();//清空上次绘制的文字markerGraphicLayer.removeAll() //清空上次绘制的标记点picMarkerGraphicLayer.removeAll();// 清空上次绘制的图片标记点
});

四、使用

// 引入依赖
import { initWordsMarker,initGraphMarker,initPictureMarker } from "@/map/drawBar.js"// 文字标注调用
initWordsMarker(ToolsConfig.view,ToolsConfig.map);
// 标记点标注调用
initGraphMarker(ToolsConfig.view,ToolsConfig.map);
// 图片标记调用
initPictureMarker(ToolsConfig.view,ToolsConfig.map);

相关文章:

ArcGIS for js 标记(vue代码)

一、引入依赖 import Graphic from "arcgis/core/Graphic"; import GraphicsLayer from "arcgis/core/layers/GraphicsLayer"; import Color from "arcgis/core/Color"; import TextSymbol from "arcgis/core/symbols/TextSymbol.js"…...

全网最全最新100道C++面试题:40-60

前述:本文初衷是为了总结本人在各大平台看到的C面经,我会在本文持续更新我所遇到的一些C面试问题,如有错误请一定指正我。新建立了一个收集问答的仓库,欢迎各位小伙伴来更新鸭interview_experience: 本仓库初衷是想为大家提供一个…...

RAG+内容推荐,应该如何实践?

最近业务有需求:结合RAG内容推荐,针对实践部分,做一点探究。 话不多说,直接开冲! 背景 首先回顾一下 RAG 技术定义,它可以结合信息检索和生成模型的混合。简单来说,RAG 预训练的语言模型 信…...

SFTTrainer loss多少合适

在机器学习和深度学习中,“loss”(损失函数)的合理值并没有一个固定的标准,因为它依赖于多种因素,包括模型的类型、任务的性质、数据的规模和特性等。然而,我们可以从一些通用的原则和经验值来讨论损失函数…...

HTTP协议详解(一)

协议 为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。 一、HTTP 协议介绍 HTTP(Hyper Text Transfer Protocol): 全…...

RK3568平台(触摸篇)串口触摸屏

一.什么是串口屏 串口屏,可组态方式二次开发的智能串口控制显示屏,是指带有串口通信的TFT彩色液晶屏显示控制模组。利用显示屏显示相关数据,通过触摸屏、按键、鼠标等输入单元写入参数或者输入操作指令,进而实现用户与机器进行信…...

MySQL数据库-事务

一、什么是事务 1.概念 事务(Transaction):一个最小的不可再分的工作单元,一个事务对应一个完整的业务,一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成,事务只针对DML语句。 数据…...

qt事件类型列表

t提供了一系列丰富的事件类型,这些事件允许应用程序响应各种用户输入、系统通知以及其他类型的交互。以下是一些常见的Qt事件类型及其用途概述: QEvent::None (0): 无事件,用于初始化或作为默认值。 QEvent::Timer (1): 定时器事件&#xff…...

ElasticSearch父子索引实战

关于父子索引 ES底层是Lucene,由于Lucene实际上是不支持嵌套类型的,所有文档都是以扁平的结构存储在Lucene中,ES对父子文档的支持,实际上也是采取了一种投机取巧的方式实现的. 父子文档均以独立的文档存入,然后添加关联关系,且父子文档必须在同一分片,由于父子类型文档并没有…...

二百四十九、Linux——在Linux中创建新用户、赋予新用户root权限并对文件夹赋予新用户的权限

一、目的 安装国产化数据库OceanBase的时候,需要创建新用户、赋予新用户root权限并对文件夹赋予新用户的权限 二、创建新用户 #创建账户 oceanadmin [roothurys22 ~]#useradd -U oceanadmin -d /home/oceanadmin -s /bin/bash [roothurys22 ~]#mkdir -p /home/oc…...

com.mysql.cj.jdbc.Driver 爆红

出现这样的问题就是pom.xml文件中没有添加数据库依赖坐标 添加上这个依赖即可,添加完后重新加载一下Maven即可。 如果感觉对你有用就点个赞!!!...

传神论文中心|第19期人工智能领域论文推荐

在人工智能领域的快速发展中,我们不断看到令人振奋的技术进步和创新。近期,开放传神(OpenCSG)社区发现了一些值得关注的成就。传神社区本周也为对AI和大模型感兴趣的读者们提供了一些值得一读的研究工作的简要概述以及它们各自的论…...

案例分享-国外轻松感UI设计赏析

国外UI设计倾向于采用简洁的布局、清晰的排版和直观的交互方式,减少用户的认知负担,从而营造出轻松的使用体验。这种设计风格让用户能够快速找到所需信息,降低操作难度,提升整体满意度。 在注重美观的同时,更加重视用户…...

操作系统(4)——文件系统

目录 小程一言文件系统管理基础概念&功能基本概念文件的结构和属性文件的操作文件的安全性和权限控制文件系统的实现和分配方式 问题&解答1、文件系统在操作系统中起到什么作用?2、文件的逻辑结构和物理结构有何区别?3、如何理解文件权限控制在操…...

C# 调用Webservice接口接受数据测试

1.http://t.csdnimg.cn/96m2g 此链接提供测试代码; 2.http://t.csdnimg.cn/64iCC 此链接提供测试接口; 关于Webservice的基础部分不做赘述,下面贴上我的测试代码(属于动态调用Webservice): 1&#xff…...

工作流流程引擎框架推荐来了

近期有不少粉丝客户朋友都在询问工作流流程引擎框架推荐。随着行业竞争激烈化,实现流程化办公已经成为当务之急。低代码技术平台及工作流流程引擎拥有够灵活、更可靠、可视化界面等诸多个优势特点,在推动企业实现数字化转型的过程中深受行业信赖与喜爱。…...

从技术博客到个人 IP 矩阵:全面攻略与实战示例

文章目录 摘要引言创建博客选择平台设计和布局 内容规划明确目标受众设定内容方向制定发布计划 SEO 优化关键词研究内链和外链元标签优化 社交媒体推广选择社交平台制定推广策略 可运行的 Demo 代码模块QA 环节问:如何增加博客的曝光度?问:如…...

SOFAJRaft 简介

SOFAJRaft 简介 SOFAJRaft是一个基于Raft一致性算法的生产级高性能Java实现,由蚂蚁金服自主研发。以下是关于SOFAJRaft的详细介绍: 来源与背景: SOFAJRaft是从百度的braft移植而来,并在其基础上进行了一系列的优化和改进。它作为…...

c#中Oracle.DataAccess.dll连接数据库的报错处理

通过DataAccess.dll连接Oracle数据库时,报如下错误 The provider is not compatible with the version of Oracle client 最终原因: dll 文件复制不全(4个文件必须) oracle.dataaccess.dll oci.dll oraociei11.dll oraops11w.dll...

PyCharm2024 专业版激活设置中文

PyCharm2024 专业版激活设置中文 官网下载最新版:https://www.jetbrains.com/zh-cn/pycharm/download 「hack-jet激活idea家族.zip」链接:https://pan.quark.cn/s/4929a884d8fe 激活步骤: 官网下载安装PyCharm ;测试使用的202…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes&#xff0…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...