Leaflet【二】图层绘制——UI图层【点线面】 矢量图层【img、svg】

news2024/11/18 8:43:40

layer图层

在leaflet当中使用图层比OL当中简便一点,我们创建的layer图层可以直接通过 addTo 方法加到地图上,不需要通过layer、source再去做一些区分,

图标 Icon

创建Marker时提供的一个Icon 详细配置–>go

  // 导入一张图片作为图标
  import Money from '@/assets/image/money.png';
  const myIcon = L.icon({
    iconUrl: Money,
    iconSize: [38, 38], // 尺寸(px)
    iconAnchor: [0, 0], // 相对于其左上角的位置
    popupAnchor: [0, 0], // 弹出窗口(popup)的坐标
    shadowUrl: '', // 图标阴影图像
    shadowSize: [40, 40], // 阴影图像的大小(px)
    shadowAnchor: [0, 0] // 阴影图像相对于其左上角的位置
  });

点 marker

通过marker创建的点就是一个layer,可以直接通过addTo加到地图上
移步 --> Marker 配置

// 构造函数
L.marker([经纬度],{options 配置对象})
// 简单marker对象
const marker = L.marker([31.5, 120]).addTo(map);
// 使用icon
const marker = L.marker([31.5, 120], {
  icon: myIcon, // 标记使用的图标
  title: 'marker1', // 相当于div的title属性 鼠标移入后的提示
  alt: 'icon 丢失了?', // 相当于img标签的alt
  zIndexOffset: 1000, // 高度
  opacity: 0.5, // 透明度
  draggable: true // 是否可拖拽
}).addTo(map);

在这里插入图片描述

路径 Path

一个抽象的类,包含了矢量覆盖物 (Polygon(多边形), Polyline(折线), Circle(圆形))之间共享的选项和常量。主要是他的一些属性(options)使用 path 抽象类的属性

选项类型默认值说明
strokeBooleantrue是否沿路径绘制边框。把它设置为false ,可以禁用多边形或圆形的边框。
colorString‘#3388ff’ Stroke(描边)颜色
weightNumber3Stroke(描边)宽度,单位:像素
opacityNumber1.0Stroke(描边)的不透明度
lineCapString‘round’定义描边 结束时使用的形状 的字符串。
lineJoinString‘round’定义在描边 转角处使用的形状 的字符串。
dashArrayStringnull一个定义描边的点画线的 图案范式的字符串。 在一些旧的浏览器中,对 Canvas-powered 图层不起作用。
dashOffsetStringnull一个字符串,它定义了进入 dash 范式的距离,以 dash 开始。 在一些旧的浏览器中,对 Canvas-powered 图层不起作用。
fillBooleandepends是否对路径进行颜色填充。设置为 false 可以禁止对多边形或圆形的填充。
fillColorString*填充颜色。默认为 color 选项的值。
fillOpacityNumber0.2填充的不透明度。
fillRuleString‘evenodd’一个字符串,定义 形状的内部区域 是如何被确定的。
bubblingMouseEventsBooleantrue当为 true时,这个路径上的鼠标事件将在地图上触发相同的事件 (除非使用 L.DomEvent.stopPropagation )。
rendererRenderer在这个路径上使用这个特定的 Renderer(渲染器) 实例。 优先于地图的 default renderer(默认渲染器)。
classNameStringnull在一个元素上设置的自定义类名。仅适用于 SVG 渲染器。

折线Polyline & 多边形Polygon & 矩形Rectangle

折线和多边形本质上是一样的,只是看第一个点和最后一个点会不会自动连接起来构成的是一条线段还是一个平面(多边形)

继承关系: Path -> Polyline -> Polygon -> Rectangle

// 多边形在入参的数组当中可以入多维数组,会挨个解析,下面就相当于两个三角形
const polygonPos = [
  [[45.51, -122.68],
    [37.77, -122.43],
    [34.04, -118.2]],
  [[40.78, -73.91],
    [41.83, -87.62],
    [32.76, -96.72]]
];
// 这里的{} 属性都是继承于Path对象的
const polygon = L.polygon(polygonPos,{}).addTo(map);

// 折线 polyline和polygon基本上是一样的,这里的入参polyLinePos和上面一样,我就不贴这个数据的代码了
const polyline = L.polyline(polyLinePos, {color: 'red'}).addTo(map);

// 矩形
const bounds = [[24.5, 125.7], [26.1, 126.8]];
L.rectangle(bounds, {color: '#ff7800', weight: 1}).addTo(map);
map.fitBounds(bounds);   //地图定位,入参是这个矩形所在的位置,那么也就是相当于定位到矩形

在这里插入图片描述

圆形标记CircleMarker & 圆 Circle

区别在于CircleMarker 的半径是以像素为单位,而Circle的半径是米

继承关系: Path -> CircleMarker -> Circle

const circle = L.circle([21, 120], {
  color: 'red',
  fillColor: '#f03',
  fillOpacity: 0.5,
  radius: 500000
}).addTo(map);
const circleMarker = L.circleMarker([26, 125], {
  radius: 10,
  fillColor: '#ff7800',
  color: '#000',
  weight: 1,
  opacity: 1,
  fillOpacity: 0.8
}).addTo(map);

在这里插入图片描述

弹出框 popup

用于在地图的某些位置打开弹出窗口。使用 Map.openPopup 打开弹出窗口,同时确保一次只打开一个弹出窗口。弹出窗option 配置

// 提示弹出框
const popup = L.popup({}).setLatLng([20, 125]).setContent('这是弹窗.').openOn(map);
// 也可以给点线面加上(当单击点之后弹出)
marker.bindPopup('<b>Hello world!</b><br>弹框.');

工具提示 Tooltip

用于在地图图层顶部显示小文本。

marker.bindTooltip('my tooltip text').openTooltip();

在这里插入图片描述

图片图层 ImageOverlay

用于在地图的特定边界上加载和显示单个图像

  for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
      const bounds = [[(j - 1) * 5, (i - 1) * 5], [5 * j, 5 * i]];
      L.imageOverlay(`https://picsum.photos/300/300?/${i}/${j}`, bounds).addTo(map);
    }
  }
选项类型默认值说明
opacityNumber1.0图像图层的不透明度。
altString‘’alt 属性的文本内容(对于可访问性很有用)。
interactiveBooleanfalse如果为 true,当单击或悬停时,图像图层将发出 鼠标事件。
crossOriginBoolean\Stringfalse是否允许跨域
errorOverlayUrlString‘’图像图层的 URL,以代替加载失败的图层。
zIndexNumber1图层的显式 zIndex。
classNameString‘’为图像指定一个自定义类名。默认是空的。

在这里插入图片描述

矢量图层 SvgOverlay

用于在地图的特定边界上加载、显示和提供对 SVG 文件的 DOM 访问。 扩展自 ImageOverlay。

  var svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
  svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
  svgElement.setAttribute('viewBox', '0 0 200 200');
  svgElement.innerHTML = '<rect width="200" height="200"/><rect x="75" y="23" width="50" height="50" style="fill:red"/><rect x="75" y="123" width="50" height="50" style="fill:#0013ff"/>';
  var svgElementBounds = [[32, -130], [13, -100]];
  L.svgOverlay(svgElement, svgElementBounds).addTo(map);

在这里插入图片描述

视频图层 VideoOverlay

用于在地图的特定范围内加载和显示视频播放器。 扩展 ImageOverlay。

const videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm';
const videoBounds = [[32, -130], [13, -100]];
L.videoOverlay(videoUrl, videoBounds).addTo(map);

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

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

相关文章

在 Android 上存档短信:4 种方法的终极指南

概括 无论是个人对话还是专业信件&#xff0c;我们的短信收件箱很快就会因大量线程和对话而变得混乱。为了帮助管理这种过载&#xff0c;许多 Android 用户转向了归档短信这一便捷功能。在本指南中&#xff0c;我们将探讨如何在 Android 设备上存档短信的详细信息&#xff0c;…

文心一言 VS 讯飞星火 VS chatgpt (265)-- 算法导论20.1 4题

四、假设不使用一棵叠加的度为 u \sqrt{u} u ​ 的树&#xff0c;而是使用一棵叠加的度为 u 1 k u^{\frac{1}{k}} uk1​的树&#xff0c;这里 k 是大于 1 的常数&#xff0c;则这样的一棵树的高度是多少&#xff1f;又每个操作将需要多长时间&#xff1f;如果要写代码&#xf…

JPHS-JMIR Public Health and Surveillance

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、投稿咨询 一、期刊简介 JMIR Public Health and Surveillance是一本多学科期刊&#xff0c;专注于公共卫生创新与技术的交叉领域&#xff0c;包括公共卫生信息学、监测&#xff08;监测系统和快速报告&#xff…

大模型难落地?聊聊大模型在智能财务应用的正确打开方式

大模型难落地&#xff1f;No&#xff0c;是你还不够了解它&#xff01; &#xff08;全文4989字&#xff0c;阅读约需10分钟&#xff09; 这两天&#xff0c;大模型几乎成了WAIC&#xff08;世界人工智能大会&#xff09;的唯一主题。大会上&#xff0c;各家企业的大模型悉数…

excel转pdf并且加水印,利用ByteArrayOutputStream内存流不产生中间文件

首先先引入包&#xff1a;加水印和excel转PDF的 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.12</version></dependency><dependency><groupId>org.apache.poi&l…

vue核心模块源码解析

响应式原理 Object.definePropertysetterProxy var count 1 var state {} Object.defineProperty(state , count,{get(){return count},set(val){count val} }) //弊端&#xff1a;不能主动监听到对象属性的新增或者删除&#xff0c;add/deleteref和reactive 声明响应式数…

Golang net/http标准库常用方法(二)

大家好&#xff0c;针对Go语言 net/http 标准库&#xff0c;将梳理的相关知识点分享给大家~~ 围绕 net/http 标准库相关知识点还有许多章节&#xff0c;请大家多多关注。 文章中代码案例只有关键片段&#xff0c;完整代码请查看github仓库&#xff1a;https://github.com/hltfa…

K8S认证|CKA题库+答案| 1. 权限控制RBAC

1、权限控制RBAC 您必须在以下Cluster/Node上完成此考题&#xff1a; Cluster Master node Worker node k8s master …

【云原生】Kubernetes 核心概念

什么是 Kubernetes Kubernetes&#xff0c;从官方网站上可以看到&#xff0c;它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语&#xff0c;它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到“ks”这个词&#xff0c;也就是“k8s”&#xff0c;它…

2024年信息素养大赛图形化编程、Python、算法创真题汇总

2024年信息素养大赛编程赛道初赛&#xff08;Scratch图形化编程、Python、C算法创意&#xff09;已经结束&#xff0c;根据Scratch实验室的了解全国青少年信息素养大赛初赛晋级及初赛成绩内容如下&#xff1a; 1.参赛选手将在 5 个工作日(节假日不计在内)内&#xff0c;通过信…

开源的数据标注工具--Label-Studio

最近在了解构建知识图谱的相关知识&#xff0c;收集了一些数据&#xff0c;对数据进行标注时尝试了下Label-Studio这个工具&#xff0c;它是开源的数据标注工具&#xff0c;个人觉得还是挺好用的。 Label-studio的安装 我是直接在服务器上用pip安装的&#xff0c;命令如下&am…

【刷题篇】位运算

文章目录 1、判定字符是否唯一2、丢失的数字3、两整数之和4、只出现一次的数字 II5、 消失的两个数字 1、判定字符是否唯一 class Solution { public:bool isUnique(string astr) {int nastr.size();if(n>26)//鸽巢原理return false;int bitMap0;for(auto& e : astr){in…

echart 折线图tooltip

运行结果 代码 import { truncate, merge } from lodash; import { getBasePieOptions, getTooltipFormatter } from "*/money/utils";const colorArray [#1F8BFF, #EDBE75, #26E3F0, #AF8FFF, #61DDAA, #FD996A, #8367E0, #1AAF87]export function getLineOptions…

大数据运维学习笔记之Ambari——筑梦之路

原则&#xff1a;分布式存储和分布式计算分开 今天就到这里啦。

以色列人Andi Gutmans开发的php zend

虽然目前php语言不行了【相关的文章前几年已经有人发过】&#xff0c;但这不是重点&#xff0c;重点是zend引擎的东西具有极大的技术价值&#xff0c;负责zend引擎实现的大佬都现在差不多都是40&#xff0c;50岁左右了&#xff0c;从1997&#xff0c;1998&#xff0c;2000到202…

记录centos中操作(查找、结束、批量)进程以及crontab定时写法的知识

环境&#xff1a;vps&#xff0c;centos7&#xff0c;python3。 近期写了个python程序&#xff0c;用青龙面板在centos上运行。程序中有while无限循环&#xff0c;但是我在青龙中设置了定时任务&#xff08;每隔半小时运行一次&#xff09;&#xff0c;于是造成了进程中有多个…

一个用Java编写的屏幕测距工具,包括游戏地图测量功能

该程序提供了一个简单便捷的方式&#xff0c;在屏幕上测量距离&#xff0c;包括游戏地图分析在内。它允许用户准确确定屏幕上两点之间的距离&#xff0c;帮助游戏过程中的战略规划、资源管理和决策制定。 特点&#xff1a; 简单易用的界面&#xff1a;直观的控制使测量距离变得…

C++的红黑树

目录 基本概念 插入结点的颜色 判断性质是否破坏 调整方式 u为g的右孩子 u存在且为红 u存在且为黑 u不存在 结论 红黑树结点定义 代码实现 基本概念 1、红黑树是一种特殊的二叉搜索树&#xff0c;每个结点会增加一个存储位表示结点的颜色&#xff08;红或黑&#x…

如何将老板的游戏机接入阿里云自建K8S跑大模型(下)- 安装nvidia/gpu-operator支持GPU在容器中共享

文章目录 安装nvidia/gpu-operator支持GPU在容器中共享 安装nvidia/gpu-operator支持GPU在容器中共享 安装 nvidia/gpu-operator遇到两个问题&#xff1a; 由于我们都懂的某个原因&#xff0c;导致某些镜像一直现在不成功。 解决办法&#xff0c;准备一个&#x1fa9c;&#…

如何理解kmp的套娃式算法啊?

概念 KMP算法&#xff0c;全称Knuth Morris Pratt算法 。文章大部分内容出自《数据结构与算法之美》 核心思想 假设主串是a&#xff0c;模式串是b 在模式串与主串匹配的过程中&#xff0c;当遇到不可匹配的字符的时候&#xff0c;对已经对比过的字符&#xff0c;是否能找到…