看过的知识不等于学会。唯有用心总结、系统记录,并通过温故知新反复实践,才能真正掌握一二
作为一名摸爬滚打三年的前端开发,开源社区给了我饭碗,我也将所学的知识体系回馈给大家,助你少走弯路!
OpenLayers、Leaflet 快速入门 ,每周保持更新 2 个案例
Cesium 快速入门,每周保持更新 4 个案例

OpenLayers 快速入门(一)Map对象
OpenLayers 快速入门(二)Layer 对象
OpenLayers 快速入门(三)Source 对象补充
OpenLayers 快速入门(四)View 对象
OpenLayers 快速入门(五)Controls 对象
OpenLayers 快速入门(六)Interaction 对象
OpenLayers 快速入门(七)矢量数据
OpenLayers 快速入门(八)事件系统
OpenLayers 快速入门(九)Extent 介绍
OpenLayers 快速入门(十)常用 API 补充

矢量图形

OpenLayers 中的矢量图形,Feature(要素)和 Geometry(几何)类构成了矢量图形系统的基础

在这里插入图片描述

Geometry 类详解

Geometry 类表示地理空间中的形状,是所有几何图形的基类。

类型一览

几何类型描述创建示例
Point单点位置new Point([x, y])
LineString线(有序点序列)new LineString([[x1,y1], [x2,y2]])
Polygon多边形(外环+内环)new Polygon([[[x1,y1], [x2,y2], …]])
Circle圆形new Circle(center, radius)
MultiPoint多点集合new MultiPoint([[x1,y1], [x2,y2]])
MultiLineString多线集合new MultiLineString([[…], […]])
MultiPolygon多面集合new MultiPolygon([[…], […]])
GeometryCollection混合几何集合new GeometryCollection([point, line])

公共方法

所有几何类型都继承自 ol/geom/Geometry 基类,具有以下公共方法

方法描述参数
clone()创建几何的深拷贝-
getExtent()获取空间范围extent(可选)
getType()获取几何类型-
transform(source, destination)转换坐标系sourceProj, destProj
applyTransform(transformFn)应用自定义坐标变换transformFn
simplify(tolerance)简化几何tolerance
rotate(angle, anchor)旋转几何angle(弧度), anchor(中心点)
scale(factorX, factorY, anchor)缩放几何factorX, factorY, anchor
translate(deltaX, deltaY)平移几何deltaX, deltaY
intersectsCoordinate(coordinate)判断坐标是否在几何内[x, y]
intersectsExtent(extent)判断是否与范围相交[minX, minY, maxX, maxY]
getCoordinates()获取坐标-
setCoordinates(coordinates)设置坐标坐标数组

点(Point)

点几何表示地球上的一个单一位置。

import Point from "ol/geom/Point";const point = new Point([116.4074, 39.9042]);
point.getCoordinates(); // [116.4074, 39.9042]point.transform("EPSG:4326", "EPSG:3857"); // [12245410.74511129, 3844357.763493687]

线(LineString)

线几何表示由有序点序列组成的路径。

特有方法:

  • getLength():返回线要素在投影平面上的长度
  • getCoordinateAt(fraction):根据参数 fraction(取值范围 0 到 1)返回线要素上的坐标
import LineString from "ol/geom/LineString";const line = new LineString([[0, 0],[10, 10],
]);
line.getLength(); // 14.142135623730951
line.getCoordinateAt(0.5); // [5, 5]

面(Polygon)

面几何表示由有序点序列组成的闭合区域。

特有方法:

  • getArea():返回面要素在投影平面上的面积
  • getInteriorPoint():返回面要素内部的一个点
import Polygon from "ol/geom/Polygon";const polygon = new Polygon([[[0, 0],[10, 0],[10, 10],[0, 10],[0, 0],],
]);
polygon.getArea(); // 100
polygon.getInteriorPoint().getCoordinates(); // [5, 5, 10]

圆(Circle)

圆形几何,Circle 类表示一个圆形区域。

new Circle(center, radius)

  • center:圆的中心点坐标,格式为 [x, y]
  • radius:圆的半径,单位与地图投影单位相同

特有方法:

  • getRadius():返回圆要素的半径
  • getCenter():返回圆要素的中心点
  • setRadius(radius):设置圆要素的半径
  • setCenter(center):设置圆要素的中心点
  • setCenterAndRadius(center, radius):同时设置中心点和半径
import Circle from "ol/geom/Circle";const circle = new Circle([0, 0], 5);circle.getRadius();circle.getCenter();circle.setRadius(10);circle.setCenter([1, 1]);circle.setCenterAndRadius([2, 2], 15);

多点(MultiPoint)

MultiPoint 类表示多个点的集合。

特有方法:

  • getPoints():返回多点要素的点数组
  • getPoint(index):返回指定索引的点
  • appendPoint(point):添加一个点到多点要素中
import MultiPoint from "ol/geom/MultiPoint";const multiPoint = new MultiPoint([[0, 0],[10, 10],
]);multiPoint.getPoints(); // [Point, Point]multiPoint.getPoint(0); // PointmultiPoint.appendPoint(new Point([20, 20]));

多线(MultiLineString)

MultiLineString 类表示多个线的集合。

特有方法:

  • getLineStrings():返回多线要素的线数组
  • getLineString(index):返回指定索引的线
  • appendLineString(lineString):添加一条线到多线要素中
  • getLength():返回多线要素的总长度
import MultiLineString from "ol/geom/MultiLineString";const multiLine = new MultiLineString([[[0, 0],[10, 10],],[[20, 20],[30, 30],],
]);multiLine.getLineStrings(); // [LineString, LineString]multiLine.getLineString(0); // LineStringmultiLine.appendLineString(new LineString([[40, 40],[50, 50],])
);

多面(MultiPolygon)

MultiPolygon 类表示多个面的集合。

特有方法:

  • getPolygons():返回多面要素的面数组
  • getPolygon(index):返回指定索引的面
  • appendPolygon(polygon):添加一个面到多面要素中
  • getArea():返回多面要素的总面积
import MultiPolygon from "ol/geom/MultiPolygon";const multiPoly = new MultiPolygon([[[[0, 0],[10, 0],[10, 10],[0, 10],[0, 0],],],[[[20, 20],[30, 20],[30, 30],[20, 30],[20, 20],],],
]);
multiPoly.getArea(); // 200
multiPoly.appendPolygon(new Polygon([[[5, 5],[15, 5],[15, 15],[5, 15],[5, 5],],])
);

集合(GeometryCollection)

GeometryCollection 类表示多个几何要素的集合。

特有方法:

  • getGeometries():返回集合中的几何要素数组
  • setGeometries(geometries):设置集合中的几何要素数组
  • getExtent():返回集合中所有几何要素的范围
import GeometryCollection from "ol/geom/GeometryCollection";const collection = new GeometryCollection([new Point([0, 0]),new LineString([[0, 0],[10, 10],]),
]);
collection.getGeometries().length; // 2

Feature 类详解

在 OpenLayers 中,一个 Feature 对象就表示一个地理要素。

核心概念

  • Feature = Geometry + Attributes + Style
  • 每个 Feature 代表地图上的独立实体(如建筑物、道路)
  • 通过 Vector Layer 渲染到地图

属性

  • 直接传递一个 Geometry 对象,或者传入一个对象,存在geometry键,Geometry 会和这个键相关联
// 示例1:直接传入一个 Geometry 对象
const feature = new Feature(new Point([116.4074, 39.9042]));// 示例2:传入一个对象,存在 geometry 键,Geometry 会和这个键相关联
const feature = new Feature({geometry: new Point([0, 0]),name: "YGYong",
});

方法

  • getGeometry():获取要素的几何对象
  • setGeometry(geometry):设置要素的几何对象
  • get(key):获取要素的属性值
  • set(key, value):设置要素的属性值
  • getProperties():获取要素的所有属性
  • setProperties(properties):设置要素的所有属性
  • getGeometryName():获取要素的几何类型名称
  • setGeometryName(name):设置要素的几何类型名称
  • getKeys():获取要素的所有属性键
  • getStyle():获取要素的样式
  • setStyle(style):设置要素的样式
  • getId():获取要素的唯一标识符
  • setId(id):设置要素的唯一标识符,要素 ID 可以与 getFeatureById 方法一起使用
// 创建要素
const feature = new Feature({geometry: new Point([0, 0]),name: "YGYong",
});// 获取name属性
const name = feature.get("name");
// 设置ID
feature.setId("feature_001");// 获取ID
const featureId = feature.getId();// 通过source获取ID
const featureById = source.getFeatureById("feature_001");
// 设置几何
feature.setGeometry(new Point([10, 20]));// 获取几何
const geom = feature.getGeometry();
// 设置属性集合
feature.setProperties({name: "重要设施",type: "医院",capacity: 500,contact: {phone: "123-456-7890",email: "contact@example.com",},
});// 获取属性集合
const properties = feature.getProperties();
// 设置固定样式
feature.setStyle(new Style({image: new CircleStyle({radius: 10,fill: new Fill({ color: "red" }),}),})
);// 设置动态样式函数
feature.setStyle((feature, resolution) => {const size = resolution < 100 ? 10 : 5;return new Style({image: new CircleStyle({radius: size,fill: new Fill({ color: "blue" }),}),});
});

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PTA数据结构 | C语言版】关于堆的判断

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录题目代码题目 将一系列给定数字顺序插入一个初始为空的最小堆。随后判断一系列相关命题是否为真。命题分下列几种&#xff1a; x is the root&#xff1a;x是根结点&#xff1b;x and y are siblings&#xff1a…

[CH582M入门第十步]蓝牙从机

前言 学习目标: 1、初步了解BLE协议 2、BLE从机代码解析 3、使用手机蓝牙软件控制CH582M从机LED亮灭一、蓝牙介绍 蓝牙(Bluetooth)是一种短距离无线通信技术,主要用于设备之间的数据传输和通信。它由爱立信(Ericsson)于1994年提出,现由蓝牙技术联盟(Bluetooth SIG)维…

力扣(LeetCode) ——轮转数组(C语言)

题目&#xff1a;轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例1&#xff1a; 输入&#xff1a; nums [1,2,3,4,5,6,7]&#xff0c;k 3 输出&#xff1a; [5,6,7,1,2,3,4] 解释&#xff1a; 向右轮转 1 步:…

Rocky9部署Zabbix7(小白的“升级打怪”成长之路)

目录 一、关闭防火墙和SElinux和配置安装源 二、zabbxi服务器配置 1、安装Zabbix server&#xff0c;Web前端&#xff0c;agent &#xff0c;mysql-server 2、配置mysql数据库 3、为Zabbix server配置数据库 4、启动对应服务 三、登录zabbix 四、客户端部署 五、解决中…

python安装package和pycharm更改环境变量

安装numpy包 1、找到对应python版本的numpy包的版本 NumPy - News确认适配python版本的numpy&#xff0c;我安装 的python是3.11所以安装的numpy是2.2.0 2、修改pip安装的镜像源 1、全局修改&#xff1a; pip config set global.index-url https://pypi.tuna.tsinghua.edu.c…

Redis中的setnx命令为什么是原子性的

Redis的SETNX命令是一个原子性操作&#xff0c;这得益于其单线程架构的特性。Redis采用单线程模型&#xff0c;所有命令都在主线程中顺序执行&#xff0c;确保每个操作都具有原子性。执行SETNX时&#xff0c;Redis会首先检查指定key是否存在&#xff1a;若不存在则设置值并返回…

深入解析Hadoop中的EditLog与FsImage持久化设计及Checkpoint机制

HDFS元数据管理概述在HDFS&#xff08;Hadoop Distributed File System&#xff09;的架构中&#xff0c;元数据管理是保证系统可靠性和性能的核心环节。NameNode作为HDFS的主节点&#xff0c;负责维护整个文件系统的命名空间和文件到数据块的映射关系。这些元数据的高效管理直…

MFC类Qt的自动布局框架

由于作者习惯使用Qt&#xff0c;习惯了其框架下的水平和垂直布局。但在使用MFC时&#xff0c;却发现并没有十分好用的布局框架&#xff0c;检索了部分资料&#xff0c;发现要么不提供源码&#xff0c;要么方案不理想。搜索了很多资料&#xff0c;最终发现一个可用方案&#xff…

认识Transformer架构

一.前言前面我们介绍了RNN相关系列的模型&#xff0c;在当今大模型时代大家认识一下就好了&#xff0c;而本章节我们是要来介绍一下重中之重的Transformer模型&#xff0c;本章节就来介绍一下他的架构&#xff0c;了解Transformer模型的作⽤以及了解Transformer总体架构图中各个…

Python学习之存数据

在得到了对应的数据之后可以考虑用文件或者数据库的方式把内容持久化下来方便之后的分析&#xff0c;此时可以使用pymongo库&#xff0c;寥寥几行代码&#xff0c;数据就已经很好地存储下来。&#xff08;此处可参考我们之前发的文章)在 Python 中引入&#xff1a;import pymon…

PointLLM - ECCV 2024 Best Paper Candidate

https://github.com/OpenRobotLab/PointLLM PointLLM: Empowering Large Language Models to Understand Point Clouds 核心问题 对比两种让大型语言模型&#xff08;LLM&#xff09;“看懂”三维世界的方法 间接方法&#xff1a;通过2D图像进行猜测。 这是目前比较常见但充…

前端-CSS-day6

目录 1、相对定位 2、绝对定位 3、绝对定位-居中 4、固定定位 5、堆叠顺序 6、CSS精灵-基本使用 7、案例-京东服务 8、字体图标-体验 9、使用字体图标 10、垂直对齐方式 11、过渡 12、透明度 13、光标类型 14、综合案例-轮播图 1、相对定位 <!DOCTYPE html>…

在离线 Ubuntu 22.04机器上运行 ddkj_portainer-cn 镜像 其他相关操作也可以复刻 docker

以下有免费的4090云主机提供ubuntu22.04系统的其他入门实践操作 地址&#xff1a;星宇科技 | GPU服务器 高性能云主机 云服务器-登录 相关兑换码星宇社区---4090算力卡免费体验、共享开发社区-CSDN博客 兑换码要是过期了&#xff0c;可以私信我获取最新兑换码&#xff01;&a…

数据结构系列之二叉搜索树

前言 这是我数据结构系列的第一篇&#xff0c;其余C语言模拟的数据结构均会在开学之后跟随老师上课而更新&#xff08;虽然我已经写完了&#xff09;&#xff0c;更新这块主要是因为要由二叉搜索树讲到AVL树再讲到红黑树&#xff0c;因为map和set的底层是红黑树&#xff0c;就…

系统架构师:软件工程-思维导图

软件工程的定义​​软件工程​​是一门系统性、规范化的工程学科&#xff0c;它将工程化的方法、工具和技术应用于软件的开发、运行与维护全生命周期&#xff0c;旨在解决软件复杂度带来的质量、成本和效率问题。其核心目标是通过结构化方法与技术实践&#xff0c;确保软件系统…

Django 入门详解:从零开始构建你的第一个 Web 应用

Django 是一个高级的 Python Web 框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循“不要重复造轮子&#xff08;Dont Repeat Yourself, DRY&#xff09;”的原则&#xff0c;内置了诸如用户认证、内容管理、表单处理等常见功能&#xff0c;非常适合构建内容驱动的网站…

[3-02-02].第04节:开发应用 - RequestMapping注解的属性2

SpringMVC学习大纲 注解的源码&#xff1a; 三、注解的params属性 3.1.params属性的理解&#xff1a; params属性用来通过设置请求参数来映射请求。对于RequestMapping注解来说&#xff1a; params属性也是一个数组&#xff0c;不过要求请求参数必须和params数组中要求的所有…

layui表格多选及选中

多选获取选中数据//获取选中行数据 var tbData table.cache["tablist2"]; var chkDatas tbData.filter(s > s.LAY_CHECKED true); if (vm.isEmpty(chkDatas) || chkDatas.length 0) {os.error("未选中数据&#xff01;");return; }单选选中样式及数…

卡尔曼滤波数据融合

状态向量&#xff1a;位置和速度 [x, y, vx, vy]预测阶段&#xff1a;用加速度估算速度和位置&#xff08;IMU数据&#xff09;更新阶段&#xff1a;用 GPS 位置修正漂移&#xff08;每隔一定时间才来一次&#xff09;import numpy as np# 时间步长&#xff08;秒&#xff09; …

Qwen3-8B 的 TTFT 性能分析:16K 与 32K 输入 Prompt 的推算公式与底层原理详解

一、模型概述与上下文支持能力Qwen3-8B 是通义实验室推出的 80 亿参数大语言模型&#xff0c;支持 32,768 token 的上下文长度 。其核心优化点包括&#xff1a;FP8 量化技术&#xff1a;通过将权重从 32-bit 压缩至 8-bit&#xff0c;显著降低显存占用并提升推理效率&#xff0…