当前位置: 首页 > 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…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...