MapLibre@5.24中实现带方向箭头的线
!DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleMapLibre GL JS 线上方向箭头示例/title script srchttps://unpkg.com/maplibre-gl5.24.0/dist/maplibre-gl.js/script link hrefhttps://unpkg.com/maplibre-gl5.24.0/dist/maplibre-gl.css relstylesheet / style body { margin: 0; padding: 0; } #map { position: absolute; top: 0; bottom: 0; width: 100%; } /style /head body div idmap/div script // 1. 初始化地图 const map new maplibregl.Map({ container: map, style: https://demotiles.maplibre.org/style.json, center: [116.397428, 39.90923], // 北京中心点 zoom: 13 }); // 2. 模拟一段路线数据 const routeData { type: FeatureCollection, features: [ { type: Feature, properties: {}, geometry: { type: LineString, coordinates: [ [116.35, 39.91], [116.38, 39.915], [116.40, 39.89], [116.43, 39.905], [116.46, 39.89] ] } } ] }; map.on(load, () { // 示例 LineString 数据 const routeGeoJSON { type: Feature, geometry: { type: LineString, coordinates: [ [116.38, 39.89], [116.40, 39.90], [116.42, 39.91], [116.44, 39.905], ], }, }; map.addSource(route, { type: geojson, data: routeGeoJSON, }); // —— ① 画线 —— map.addLayer({ id: route-line, type: line, source: route, paint: { line-color: #ffffff, line-width: 2, }, layout: { line-cap: round, line-join: round, }, }); // —— ② 注册 SVG 箭头图标 —— // SVG 箭头尖朝右(→)宽高 24x24viewBox 要匹配 const svgArrow svg xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 24 24 path dM4 12 L16 6 L16 10 L22 10 L22 14 L16 14 L16 18 Z fill#ffffff/ /svg; const img new Image(); img.onload () { // addImage 必须在 onload 回调里 map.addImage(dir-arrow, img); // —— ③ 添加 symbol 图层沿线放箭头 —— map.addLayer({ id: route-arrows, type: symbol, source: route, layout: { symbol-placement: line, // 关键沿线分布 symbol-spacing: 120, // 箭头间距(px)可调 icon-image: dir-arrow, icon-size: 0.8, // icon-rotate: 90, // SVG 尖朝右→需转90°才顺线方向若尖朝上则删掉这行 icon-rotation-alignment: map, // 跟随地图旋转跟随线方向 icon-allow-overlap: true, icon-ignore-placement: true, }, paint: { icon-opacity: 0.9, }, }); }; img.src data:image/svgxml;charsetutf-8, encodeURIComponent(svgArrow); }); /script /body /html

相关新闻

别再让模型‘偏科’了:用Hard Negative Mining给你的目标检测模型开个‘错题本’

别再让模型‘偏科’了:用Hard Negative Mining给你的目标检测模型开个‘错题本’

深度学习中的"错题本":Hard Negative Mining如何重塑目标检测模型训练在目标检测模型的训练过程中,我们常常会遇到一个令人头疼的问题——模型"偏科"。就像学生时代有些同学只擅长做某些类型的题目一样,模型也会对某些样…

2026/7/1 8:08:18阅读更多 →
粉笔公考课程能否冲刺高分?真实测评

粉笔公考课程能否冲刺高分?真实测评

公务员考试这条路,说真的,谁没在网上刷到过"980元上岸"的广告?一边是市面上动辄上万的线下班让人望而却步,一边又担心便宜没好货。我也纠结过:粉笔这个980系统班,真的能撑起整个备考周期吗&#…

2026/7/1 8:03:17阅读更多 →
从Turbo编码到环形缓冲:手把手拆解LTE HARQ中RV(冗余版本)的生成与选择逻辑

从Turbo编码到环形缓冲:手把手拆解LTE HARQ中RV(冗余版本)的生成与选择逻辑

从Turbo编码到环形缓冲:手把手拆解LTE HARQ中RV(冗余版本)的生成与选择逻辑在无线通信系统的演进中,混合自动重传请求(HARQ)技术始终扮演着关键角色。作为LTE物理层与MAC层交互的核心机制,HARQ通…

2026/7/1 8:03:17阅读更多 →
基于TPAFE0808与STM32F469II的多通道信号采集系统设计

基于TPAFE0808与STM32F469II的多通道信号采集系统设计

1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与控制系统一直是关键的技术需求。这类系统通常需要同时处理多路模拟信号的输入输出,并对系统状态进行实时监测。传统方案往往面临通道数量不足、精度不够或响应速度慢等问题…

2026/7/1 12:59:49阅读更多 →
类型系统的图灵完备:TypeScript 高级类型体操的底层逻辑与工程边界

类型系统的图灵完备:TypeScript 高级类型体操的底层逻辑与工程边界

类型系统的图灵完备:TypeScript 高级类型体操的底层逻辑与工程边界 一、类型安全的代价:当基础类型无法表达业务约束 TypeScript 的基础类型系统(泛型、联合类型、交叉类型)可以覆盖 80% 的日常类型标注需求。但在复杂业务场景中&…

2026/7/1 12:59:49阅读更多 →
5分钟掌握Adobe破解工具:Adobe-GenP 3.0完整激活指南

5分钟掌握Adobe破解工具:Adobe-GenP 3.0完整激活指南

5分钟掌握Adobe破解工具:Adobe-GenP 3.0完整激活指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 还在为Adobe Creative Cloud昂贵的订阅费用而烦恼吗…

2026/7/1 12:59:49阅读更多 →
STM32与74HC165级联实现多按键检测方案

STM32与74HC165级联实现多按键检测方案

1. 项目概述:用并行转串行芯片简化复杂系统在嵌入式系统开发中,I/O端口资源紧张是个永恒难题。当STM32F031C6这类引脚有限的MCU需要接入大量按键、传感器时,传统的直接GPIO连接方式会迅速耗尽宝贵的硬件资源。去年我在一个工业控制面板项目中…

2026/7/1 12:59:49阅读更多 →
告别付费墙:一键下载30+平台文档的浏览器神器

告别付费墙:一键下载30+平台文档的浏览器神器

告别付费墙:一键下载30平台文档的浏览器神器 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的烦…

2026/7/1 12:59:49阅读更多 →
Linux 信号机制:从内核投递到用户态捕获的完整链路解析

Linux 信号机制:从内核投递到用户态捕获的完整链路解析

Linux 信号机制:从内核投递到用户态捕获的完整链路解析 一、异步中断下的程序失控——信号为何是系统编程中最易踩坑的机制 信号(Signal)是 Unix/Linux 系统中最古老的进程间通信机制之一,也是唯一一种异步通知手段。当内核向进程…

2026/7/1 12:54:48阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/1 4:42:14阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/1 5:19:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →