arcgis for js 如何自定义绘制仿高德导航线(自定义轨迹路线)

news2024/9/28 9:30:39

1、arcgis for js + vue3

绘制效果图
自定义路线样式效果

实现

1、实现上图路线的自定义线条,先拆分线条为三个部分:较宽的暗绿色背景+浅绿色背景+白色箭头
2、自定义线条的symbol,使用CIMSymbol

import CIMSymbol from "@arcgis/core/symbols/CIMSymbol";

// 背景箭头轨迹样式
export const arrowsLineSymbol = new CIMSymbol({
  data: {
    type: "CIMSymbolReference",
    symbol: {
      type: "CIMLineSymbol",
      symbolLayers: [
        {
          // 路线白色箭头
          type: "CIMVectorMarker",
          enable: true,
          size: 4,
          markerPlacement: {
            type: "CIMMarkerPlacementAlongLineSameSize", // 在这条线上放置相同大小的标记
            endings: "WithMarkers",
            placementTemplate: [19.5], // 箭头间距
            angleToLine: true, // 符号保持其与直线的角度
          },
          frame: {
            xmin: -5,
            ymin: -5,
            xmax: 5,
            ymax: 5,
          },
          markerGraphics: [
            {
              type: "CIMMarkerGraphic",
              geometry: {
                rings: [
                  // 箭头-自定义绘制路线上面的连续出现的图标
                  [
                    [-5, -5.47],
                    [1.96, -0.03],
                    [-6, 5.6],
                    [1.96, -0.03],
                    [-5, -5.47],
                  ],
                ],
              },
              symbol: {
                // 符号样式
                type: "CIMPolygonSymbol",
                symbolLayers: [
                  {
                    type: "CIMSolidStroke", // 闭合的
                    enable: true,
                    color: [255, 255, 255, 255],
                    width: 1,
                  },
                ],
              },
            },
          ],
        },
        {
          // 路线浅绿色背景
          type: "CIMSolidStroke",
          enable: true,
          capStyle: "Butt",
          joinStyle: "Round",
          width: 5,
          color: [48, 211, 102, 255],
        },
        {
          // 路线暗绿色边框
          type: "CIMSolidStroke",
          enable: true,
          capStyle: "Butt",
          joinStyle: "Round",
          width: 8,
          color: [0, 115, 76, 255],
        },
      ],
    },
  },
});

3、结合上面的symbol,绘制自定义线条的图层

import GraphicsLayer from "@arcgis/core/layers/GraphicsLayer";
import Polyline from "@arcgis/core/geometry/Polyline";
import Graphic from "@arcgis/core/Graphic";
// 引入自定义symbol
import { arrowsLineSymbol } from "./symbol";

function createLine(
	map: Map | undefined, // 项目地图map
	wktJson: any // 路线坐标集、坐标系对象
) {
	if (!map) return;
	const graphicsLayer = new GraphicsLayer(); // 创建一个图层对象
	const polyline = new Polyline({
      ...wktJson, // paths:[[x1, y1], [x2, y2], ...], spatialReference: new SpatialReference({wkid: xxxx})
    });
    // 图层
	const lineGraphic = new Graphic({
      geometry: polyline,
      symbol: arrowsLineSymbol,
    });
    // 图层添加到图层组对象
    graphicsLayer.add(lineGraphic);
	map.add(graphicsLayer); // 将图层添加到地图上
}

4、总结: 可以根据修改symbol参数自定义绘制更多图层样式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python教程】如何使用Jupyter Notebook

Jupyter Notebook 是一个基于 Web 的交互式计算环境,支持 Python、R、Julia 等多种编程语言。它是数据科学家、分析师和研究人员的常用工具。Jupyter Notebook 提供了一个强大的用户界面,可以通过笔记本格式进行代码编写、运行、调试、可视化和文档化。 …

DREAMLLM: SYNERGISTIC MULTIMODALCOMPREHENSION AND CREATION

发表时间:arXiv 2024年5月15日 论文链接:https://arxiv.org/pdf/2309.11499 作者单位:Xi’an Jiaotong University Motivation:本文介绍了 DREAMLLM,这是一个学习框架,首先实现了多功能多模态大型语言模型 …

Java IO.字符集,流,缓冲流 转换流 对象操作流

一.字符集 如果使用字节流 , 把文本文件中的内容读取到内存时, 可能会出现乱码 如果使用字节流 , 把中文写入文本文件中 , 也有可能会出现乱码 读取n.txt"你好" 两个汉字 字节流读中文,每次只能读一部分所以出现了乱码 字符集(Character se…

美股:Nvidia的新一代AI芯片Blackwell或因设计缺陷推迟上市

设计缺陷影响推出时间 据知情人士透露,全球领先的芯片制造商Nvidia计划推出的最新人工智能(AI)芯片Blackwell可能面临长达三个月甚至更长的推迟。这一变动可能会影响到Nvidia的多位重要客户,包括Meta、谷歌和微软等,这些客户已订购了总值数百…

Datawhale AI 夏令营 从零入门 AI for Science(AI + 经济)

1.在TASK3中虽然给出了时间序列挖掘加融合模型的方法预测price,但是并不能识别到负电价的情况。查看TASK3给出的代码的预测结果可以发现模型几乎不会预测出负数,这和实际情况是有差别的。 2.利用爬虫爬取天气信息与风电信息绘制热力图 惊人的发现price和…

【MATLAB源码】数学建模基础教程(2)--层次分析法(评价类算法)

系列文章目录在最后面,各位同仁感兴趣可以看看! 层次分析法 引言一、层次分析法的特点二、模型的建立求解过程 (1)问题的提出:实际问题的转化(2)建立层次结构模型(3)构造判断(成对比较)矩阵(4)一致性检验:三、层次分析法的优点与…

【无所从来,亦无所去】纪念去世的奶奶和外公「纪念网页」

大家好,我是DX3906 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘大前端领域、真诚分享知识与智慧的小天地!🎇 纪念 2024年 奶奶 85岁、 外公83岁。他们俩分别在今年的2月份和7月份离开了。 时光倒流,奶…

美股:巴菲特减持苹果股份

财报亮点 伯克希尔哈撒韦发布的2024年第二季度财报显示,公司营收达936.53亿美元,略高于市场预期的910.9亿美元。净利润为303.48亿美元,其中投资收益占据一大比例,较去年同期的359.12亿美元有所下降,但远超市场预期的17…

JNPF全新V5.0版本!重磅升级——其他升级优化篇

尊敬的JNPF用户们: 我们非常高兴地宣布,经过团队数月的辛勤努力和不断的技术创新,JNPF快速开发平台终于迎来了里程碑式的全新升级——V5.0版本!这一版本的更新发布,不仅代表着我们技术实力的进一步提升,是…

Golang死锁vs操作系统死锁

目录 一、死锁 二、Golang死锁场景 2.1 重复上锁 2.2 不会减少的 WaitGroup 2.3 空select 2.4 channel 一、死锁 1.golang中死锁的触发条件: 死锁是当 Goroutine 被阻塞而无法解除阻塞时产生的一种状态。 2.操作系统死锁: 发生死锁时,线…

如何在2024年成为PDF合并文件高手?试试这3款软件!

在这个数字化的年代,PDF文件早就成了我们工作学习时的老朋友了。不过,要是碰上一堆PDF文件要合并,是不是觉得挺头疼的?别急,今天我们就来聊聊2024年怎么变成合并PDF的大佬,还给你推荐三款特别实用的软件&am…

【从零开始一步步学习VSOA开发】运行hellovsoa

运行hellovsoa 和所有编程技术的首个程序一样,我们先创建、编译、部署、运行一个最简单的示例程序: hellovsoa。 创建 base 工程 需要先创建一个 workspace 工作目录,然后在 workspace 里先新建 base 工程。 打开 RealEvo-IDE&#xff0c…

BPM(业务流程管理):提升企业效率的关键

在现代企业中,业务流程管理(BPM)已成为提升效率和优化运营的关键工具。随着企业环境的不断变化和竞争的加剧,越来越多的组织开始关注如何通过有效的BPM实践来提升业务表现。本文将探讨BPM的基本概念、实施策略以及如何通过BPM实现…

Java并发中的死锁四大条件与避免策略

Java并发中的死锁四大条件与避免策略 1、死锁是啥?2、死锁的四大条件3、避免死锁的策略 💖The Begin💖点点关注,收藏不迷路💖 1、死锁是啥? 死锁就像是几个朋友在聚会时,每个人都想和别人手里的…

你的财富正在被一个叫做通货膨胀的怪兽给吞噬掉,你却浑然不觉。

据统计,2024年全球总体通货膨胀率预计达到5.8%,这意味着:你的财富正在被一个叫做通货膨胀的怪兽给吞噬掉,你却浑然不觉。 数据来源:国际货币基金组织 如何跑赢通货膨胀? 家庭财富的积累速度,要…

[Git][分支管理][下]详细讲解

目录 1.合并冲突2.分支管理策略3.分支策略1.基本原则2.bug分支3.删除临时分支 1.合并冲突 在实际分⽀合并的时候,有时候可能会遇到代码冲突的问题,例如: dev分支在写一部分代码,而master分支也没闲着,也在写着同一份代…

MATLAB指针读数识别系统

前言 ①经过在工厂的实地测试,图像采集与传输装置可以正常工作,电脑端可以接收到清晰的图像,并且整个系统具有一定的的抗干扰的能力,在嘈杂的环境中亦可以实现其功能。 ②通过matlab可实现图片的预处理以及指针识别读数识别&…

MySQL笔记(三):修改表

##注:需要在cmd管理员命令行链接mysql再打开sqlyog 一、基本介绍 二、CRUD([create][read][update][delete],增删改查)语句 1、insert语句 (添加数据) insert into table_name(第一项,第二项&#xff0…

LeetCode(力扣)数组篇 JAVA刷题详解

1 简介 是不是有许多小伙伴在刷力扣的时候感觉无从下手?从头按顺序开始刷的童鞋们可能会比较有感触,为什么才第四题就感觉很难了?没关系,本文将对力扣的 1-500 题中不需要会员的数据结构与算法题目(数据库与 shell 除外)进行分类&#xff0…

Linux网络编程之dpdk的环境配置详解

文章目录 一、dpdk是什么?二、dpdk的环境配置多队列网卡是什么?怎么判断是否为多队列网卡?怎么修改成多队列网卡?修改内存配置,使其支持hugepage(巨页)下载dpdk编译dpdk 一、dpdk是什么? DPDK(…