【openlayers系统学习】4.1渲染矢量瓦片、VectorTile 层

news2024/12/23 8:27:55

一、VectorTile 层

我们现在知道如何加载切片图像,并且已经看到了加载和渲染矢量数据的不同方法。但是,如果我们能够拥有快速传输到浏览器的切片,并且可以动态样式化,那该多好啊?这就是矢量切片的用途。OpenLayers 通过 VectorTile 图层支持矢量切片。

注意:这里有很多瓦片​和切片​两个名称混用,都已相同的含义tile

由矢量数据渲染的世界地图

我们将从 index.html​ 中与基础练习中相同的标签开始。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>OpenLayers</title>
    <style>
      @import "node_modules/ol/ol.css";
    </style>
    <style>
      html, body, #map-container {
        margin: 0;
        height: 100%;
        width: 100%;
        font-family: sans-serif;
      }
    </style>
  </head>
  <body>
    <div id="map-container"></div>
    <script src="./main.js" type="module"></script>
  </body>
</html>

像往常一样,我们将 index.html​ 保存在workshop文件夹的根目录中。

对于该应用程序,我们将从 Workshop 文件夹根目录中的新 main.js​ 开始,并添加所需的导入:


import MVT from 'ol/format/MVT';
import VectorTileLayer from 'ol/layer/VectorTile';
import VectorTileSource from 'ol/source/VectorTile';
import {Map, View} from 'ol';
import {fromLonLat} from 'ol/proj';
  • VectorTileLayer代表一个矢量瓦片图层,允许高效地显示大量地理数据。
  • VectorTileSource代表矢量瓦片的源,用于提供瓦片数据。
  • MVT格式模块,用于解析和处理MVT格式的数据。MVT(MapBox Vector Tile)
  • fromLonLat 是一个用于将 WGS84 坐标(经度/纬度)转换为地图投影坐标的函数。

我们将使用来自 Natural Earth 数据的世界各国简易地图作为数据源,由 GeoServer 提供矢量切片服务。

我们要在此处创建的地图设置与我们在之前的练习中使用的相同:

const map = new Map({
  target: 'map-container',
  view: new View({
    center: fromLonLat([0, 0]),
    zoom: 2,
  }),
});

这次我们要使用的图层类型是 VectorTileLayer​ ,以及 VectorTileSource​ :

const layer = new VectorTileLayer({
  source: new VectorTileSource({
    format: new MVT(),
    url:
      'https://ahocevar.com/geoserver/gwc/service/tms/1.0.0/' +
      'ne:ne_10m_admin_0_countries@EPSG%3A900913@pbf/{z}/{x}/{-y}.pbf',
    maxZoom: 14,
  }),
});
map.addLayer(layer);

我们的数据源仅提供缩放级别 0​ 到 14​ ,因此我们需要将此信息传递给源。矢量切片图层通常针对 512 像素的切片大小进行优化,这也是 VectorTile 源的切片网格的默认值。数据提供者要求我们显示一些 attributions​ ,我们也将其添加到源配置中。

VectorTileSource 与 VectorSource 一样配置了format​和 URL​。MVT 格式解析 Mapbox 矢量切片。与栅格瓦片一样,通过瓦片的缩放级别和 x、y 坐标来访问瓦片数据。因此,URL 包含了 {z}​ 占位符表示缩放级别,以及 {x}​ 和 {y}​ 占位符表示瓦片坐标。

http://localhost:5173/ 上的工作示例显示了一个无样式的矢量切片地图,如下所示:

image

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

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

相关文章

ubuntu_概念

su(switch user) wget(Web Get) cd(change directory) dpkg(Debian Packager)为 “Debian” 专门开发的套件管理系统&#xff0c;方便软件的安装、更新及移除。 chmod(Change Mode)用于改变文件或目录的权限 ps(Process Status)进程状态 grep(Global Regular Expression Print)…

C++利用TinyXML读取XML文件

TinyXML是什么&#xff1f; TinyXML是一个轻量级的C XML解析器&#xff0c;它提供了一种简单的方法来解析和操作XML文档。TinyXML被设计为易于使用和集成到C项目中&#xff0c;并且非常适合处理小型XML文件。 以下是TinyXML的一些主要特点和优点&#xff1a; 轻量级: T…

李良济中医课堂走进老年大学,倪金山医生讲座守护老年人脊柱健康

5月21日&#xff0c;李良济中医课堂走进姑苏区老年大学&#xff0c;特别邀请倪金山医生&#xff0c;为老年朋友带来“脊柱健康”专题课。 中医课堂上&#xff0c;倪金山医生贴合老年人的身体健康&#xff0c;详细为老年朋友们分享脊柱对身体健康的重要性&#xff0c;如何预防脊…

[笔试训练](三十二)094:素数回文095:活动安排096:合唱团

目录 094:素数回文 095:活动安排 096:合唱团 094:素数回文 题目链接:素数回文_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 模拟题&#xff1a; 1.构造回文数 2.检测是否为素数 #include <iostream> #include <string> #include <c…

商品发布功能

文章目录 1.SPU和SKU介绍1.SPU2.SKU3.两者之间的关系 2.完成商品发布界面1.组件引入1.commoditylaunch.vue 引入到 src/views/modules/commodity下2.multiUpload.vue 引入到 src/components/upload/multiUpload.vue 2.创建菜单1.创建目录2.创建菜单&#xff0c;注意菜单路由要匹…

《艺术大观》知网艺术刊:可加急, 出刊上网快

《艺术大观》 《艺术大观》征文通知 《艺术大观》期刊诚邀学者、艺术家和文化工作者积极投稿&#xff0c;共同探索艺术领域的前沿问题&#xff0c;促进学术交流和艺术创作的发展。我们欢迎各类艺术形式的研究与评论&#xff0c;包括但不限于绘画、雕塑、音乐、舞蹈、戏剧、电…

Linux c开发线程锁和条件变量使用

#include <pthread.h> #include <stdio.h> #include <unistd.h>pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond PTHREAD_COND_INITIALIZER;void* thread_function(void* arg) {printf("线程等待唤醒,锁定互斥量...\n");…

【C语言】程序员自我修养之文件操作

【C语言】程序员自我修养之文件操作 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C语言学习之路 文章目录 【C语言】程序员自我修养之文件操作前言一.文件介绍1.1为什么使用文件1.2文件分类1.3二进制文件和文本文件 二.文件的打开和关闭2.…

个人博客网站搭建笔记1

文章目录 前言要求自己的理解资源过程视频教程SpringBoot开发一个小而美的个人博客p1课程介绍p2需求和功能 前言 自己之前其实就想搭建一个属于自己的网站&#xff0c;但是不知道怎么操作&#xff0c;没找到合适的教程&#xff0c;&#xff08;手把手的那种&#xff09;&#…

Pytest框架实战二

在Pytest框架实战一中详细地介绍了Pytest测试框架在参数化以及Fixture函数在API测试领域的实战案例以及具体的应用。本文章接着上个文章的内容继续阐述Pytest测试框架优秀的特性以及在自动化测试领域的实战。 conftest.py 在上一篇文章中阐述到Fixture函数的特性&#xff0c;第…

智慧医疗时代:探索互联网医院开发的新篇章

在智慧医疗时代&#xff0c;互联网医院开发正引领着医疗服务的创新浪潮。通过将先进的技术与医疗服务相结合&#xff0c;互联网医院为患者和医生提供了全新的互动方式&#xff0c;极大地提升了医疗服务的便捷性和效率。本文将深入探讨互联网医院的开发&#xff0c;介绍其技术实…

pdf加水印怎么加?3种添加水印方法分享

pdf加水印怎么加&#xff1f;PDF加水印不仅是为了保护文档内容&#xff0c;确保信息的安全性和完整性&#xff0c;更是一种有效的版权保护措施。通过添加水印&#xff0c;您可以在文档中嵌入公司名称、日期、编号等信息&#xff0c;以明确文档的归属权和使用限制。此外&#xf…

重学java 42.多线程 等待唤醒机制案例分析

Strength is built under a heavy load,I am expecting to pick up all of my loads and travel on. —— 24.5.24 章节重点 1.会用wait和notify两个方法 2.会使用Lock锁对象 3.会利用Cal1able接口实现多线程 4.会使用线程池完成多线程 等待唤醒案例分析&#xff08;线程之间的…

SEO优化,小白程序员如何做SEO优化流量从0到1

原文链接&#xff1a;SEO优化&#xff0c;小白程序员如何做SEO优化流量从0到1 1、SEO是什么&#xff1f; SEO即&#xff1a;搜索引擎优化(Search Engine Optimization)&#xff0c;是一种通过优化网站结构、内容和外部链接等因素&#xff0c;提高网站在搜索引擎中的自然排名&…

景源畅信数字:抖音小店新手该怎么做?

在数字化时代的浪潮中&#xff0c;抖音不仅仅是一个分享短视频的平台&#xff0c;更是一个充满潜力的电商平台。对于想要进入这个领域的朋友们来说&#xff0c;开设一家抖音小店无疑是一个既激动又迷茫的起点。那么&#xff0c;作为新手&#xff0c;该如何在这个全新的舞台上立…

在链游中,智能合约如何被用于实现游戏内的各种功能

随着区块链技术的快速发展&#xff0c;链游&#xff08;Blockchain Games&#xff09;作为区块链技术的重要应用领域之一&#xff0c;正逐渐展现出其独特的魅力和优势。其中&#xff0c;智能合约作为链游的核心技术之一&#xff0c;对于实现游戏内的各种功能起到了至关重要的作…

【YOLOv5/v7改进系列】替换激活函数为SiLU、ReLU、LeakyReLU、FReLU、PReLU、Hardswish、Mish、ELU等

一、导言 激活函数在目标检测中的作用至关重要&#xff0c;它们主要服务于以下几个关键目的&#xff1a; 引入非线性&#xff1a;神经网络的基本构建块&#xff08;如卷积层、全连接层等&#xff09;本质上是线性变换&#xff0c;而激活函数通过引入非线性&#xff0c;使得网络…

完成商品属性分组和商品属性关联维护

文章目录 1.前端页面搭建1.复制attrgroup-attr-relation.vue到src/views/modules/commodity下2.加入超链接和引入组件 src/views/modules/commodity/attrgroup.vue1.加入超链接2.引入组件 3.数据池加入变量4.使用组件1.引用组件2.添加方法3.测试&#xff0c;点击关联&#xff0…

【低照度图像增强系列(7)】RDDNet算法详解与代码实现(同济大学|ICME)

前言 ☀️ 在低照度场景下进行目标检测任务&#xff0c;常存在图像RGB特征信息少、提取特征困难、目标识别和定位精度低等问题&#xff0c;给检测带来一定的难度。 &#x1f33b;使用图像增强模块对原始图像进行画质提升&#xff0c;恢复各类图像信息&#xff0c;再使用目标检测…

qt改变样式表 label

border:1px solid black; background-color:rgb(238,234,235); border-color:rgb(0,112,249);