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): 定时器事件ÿ…...
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ÿ…...
工作流流程引擎框架推荐来了
近期有不少粉丝客户朋友都在询问工作流流程引擎框架推荐。随着行业竞争激烈化,实现流程化办公已经成为当务之急。低代码技术平台及工作流流程引擎拥有够灵活、更可靠、可视化界面等诸多个优势特点,在推动企业实现数字化转型的过程中深受行业信赖与喜爱。…...
从技术博客到个人 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…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
