从零开始Vue项目中使用MapboxGL开发三维地图教程(六)加载点、线、面图层以及三维面图层(白模)

news2024/11/15 11:13:22

目录

      • 1、加载点图层
      • 2、加载线和面图层
      • 3、加载三维面图层(白模)

1、加载点图层

开发地图应用时,加载POI等点状数据,显示文字或者图标信息,mapbox-gl对应使用的是符号图层(symbol),下面的代码时使用Mapbox GL JS中的默认Marker方法向地图添加两个标记。

          // Create a default Marker and add it to the map.
          const marker1 = new this.$mapboxgl.Marker()
            .setLngLat([116.03238901390978, 38.913188059745586])
            .addTo(map);

          // Create a default Marker, colored black, rotated 45 degrees.
          const marker2 = new this.$mapboxgl.Marker({
              color: 'black',
              rotation: 45
            })
            .setLngLat([116.03238901390978, 38.913188059745586])
            .addTo(map);

marker1中心坐标116.03238901390978, 38.913188059745586。它使用默认的标记颜色。
marker2使用选项定义新Marker对象的颜色和旋转参数。

2、加载线和面图层

使用GeoJSON数据源向地图添加一个多边形,

首先使用addSource添加GeoJSON数据,该数据包含一个多边形。然后使用addLayer创建一个新的图层,并设置多边形外观的样式。为了在多边形周围添加轮廓,它再次使用addLayer来创建一个引用相同GeoJSON源的新线层。

代码示例:

          const chinaboundary = require('../assets/chinajson.json');
          console.log(chinaboundary)
          const chinaboundarysource = {
            type: 'geojson',
            data: {
              type: 'FeatureCollection',
              features: chinaboundary.features
            }
          }
          map.addLayer({
            id: 'chinaboundaryline',
            type: 'line',
            source: chinaboundarysource,
            paint: {
              'line-color': 'yellow',
              'line-opacity': 0.75,
              'line-width': 5
            }
          });
          map.addLayer({
            id: 'chinaboundarypolghon',
            type: 'fill',
            source: chinaboundarysource, // reference the data source
            layout: {},
            paint: {
              'fill-color': '#0080ff', // blue color fill
              'fill-opacity': 0.5
            }
          });

在这里插入图片描述

3、加载三维面图层(白模)

实现功能:加载带高度信息的面数据,显示简单建筑(白模)效果

三维面图层在mapbox-gl对应的是填充挤压(fill-extrusion)图层

在mapbox-gl加载fill-extrusion图层过程:通过加载geojson矢量数据,数据源加载完成后,再进行图层的设置。
以geojson数据为例:

 //添加geojson数据源,数据中必须有高度的字符,并且是数字类型的
          map.addSource('buildingdata', {
            'type': 'geojson',
            'data': {
              'type': 'Feature',
              'geometry': {
                'type': 'Polygon',
                "properties": {
                  "height": 20000
                },
                'coordinates': [
                  [
                    [115.720119, 39.685438],
                    [116.155905, 39.724518],
                    [116.275488, 39.548482],
                    [115.548794, 39.372887],
                    [115.720119, 39.685438],
                  ]
                ]
              }
            }
          });
          //添加三维建筑图层,id对应以上
          map.addLayer({
            'id': 'buildingdata',
            'type': 'fill-extrusion',
            'source': 'buildingdata',
            'paint': {
              // 设置填充颜色
              'fill-extrusion-color': '#fff000',
              //从属性中获得高度,这里用的是height字段
              'fill-extrusion-height': ['get', 'height'],
              // 透明度设置
              'fill-extrusion-opacity': 0.8
            }
          });

效果:

在这里插入图片描述

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

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

相关文章

Canvas.drawText 是以哪里为基线往什么方向开始画的。有什么居中方案?

0 前言 Canvas.drawText(String text, float x, float y, Paint paint) 这个方法在绘制文本时是从以什么为基线向什么地方开始绘制呢,水平方向上,可以通过设置 setTextAlign(Paint.Align.??) 来设置基线在文本左边、右边或者中间。但是垂直方向上是在哪…

三、DI 依赖注入学习总结

文章目录 一、依赖注入1.1 构造函数注入1.2 Setter 方法注入(重点掌握)1.2.1 通过 Set 注入复杂类型和集合类型数据 一、依赖注入 依赖注入(Dependency Injection,DI)是 Spring 框架的核心特性之一,也是 S…

chatgpt赋能python:Python中如何输出换行符\n

Python中如何输出换行符\n 如果你是一个Python开发者,你可能已经熟悉了多个输出Python变量的方法。但是,当你需要输出换行符’\n’时,你可能会遇到一些问题。这篇文章将介绍在Python中输出换行符的几种方法,并且告诉你哪种方法是…

13.IOC容器

IOC容器 IOC:Inversion of Control,翻译过来是反转控制 IOC思想 获取资源的传统方式:在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体…

第12课【嵌入式常见存储器类型】ROM RAM 一次性 DDR双倍速率 Flash

目录 存储器易失性存储器RAMDRAMSDRAMDDR SDRAM SRAMDRAM/SRAM总结 非易失性存储器ROMMASK ROMOTPROMEPROMEEPROM FLASH 存储器 存储器是组成计算机的重要部分,它可以存储数据,能让计算机拥有“记忆”。目前根据断电后,存储的数据是否会丢失…

TiDB v7.1.0 版本 Resource Control体验

作者: Ming 原文来源: https://tidb.net/blog/8abfaa25 简介 近期迎来了 TiDB v7.1.0 版本,也是2023年首发的LTS(Long-Term Support Release)版本,相比于之前的 v6.5.0 LTS版本已经过去了很长时间&…

Android PagerSnapHelper改造RecyclerView为ViewPage,kotlin

Android PagerSnapHelper改造RecyclerView为ViewPage&#xff0c;kotlin <?xml version"1.0" encoding"utf-8"?> <androidx.recyclerview.widget.RecyclerView xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tool…

Spring Web vs Spring Webflux

当你需要构建Web应用程序时&#xff0c;Spring Web 和 Spring Webflux 是Spring生态系统中的两个框架&#xff0c;但它们之间有一些关键区别。 Spring Web 是一个传统的Web框架&#xff0c;它构建在Servlet API之上。它旨在处理阻塞式I/O&#xff0c;即线程在从数据库或其他服务…

CTFHub | 过滤cat

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习&#xff0c;实训平台。提供优质的赛事及学习服务&#xff0c;拥有完善的题目环境及配套 writeup &#xff0c;降低 CTF 学习入门门槛&#xff0c;快速帮助选手成长&#xff0c;跟随主流比赛潮流。 0x01 题目描述…

Springboot读取配置文件的方式以及多环境读取的方式

Springboot读取配置文件的方式以及多环境读取的方式 一.首先介绍一下读取配置文件中的值的方式1.Value注解2.ConfigurationProperties注解赋值3.使用 Environment 读取配置文件 多环境读取 在项目中我们可能需要灵活的配置一些参数&#xff0c;就会将这些参数写到yaml文件或者p…

C++技能系列 ( 4 ) - 深入理解C++临时对象【解析与提高性能手段】

系列文章目录 C技能系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everything is for the future of dream w…

Ubuntu设置虚拟机共享目录/mnt/hgfs下无文件显示相关问题归纳

文章目录 问题一&#xff1a;/mnt目录下无hgfs文件夹问题二&#xff1a;/mnt/hgfs 文件夹为空 问题一&#xff1a;/mnt目录下无hgfs文件夹 问题背景&#xff1a; 在打开共享目录A的时候&#xff0c;突然改变共享目录&#xff0c;也就是从A改到了B&#xff0c;但是资源管理器还…

TiDB v7.1.0版本 相关(部署、在线扩容、数据迁移)测试

作者&#xff1a; tomxu 原文来源&#xff1a; https://tidb.net/blog/69083bca TiDB v7.1.0版本 相关&#xff08;部署、在线扩容、数据迁移&#xff09;测试 一、服务器信息参数 | 序号 | 服务器型号 | 主机名 | 配置 | | IP地址 | 用户名 | 密码 | | -- | --------- | …

chatgpt赋能python:Python怎么过滤异常值-降噪数据的利器

Python怎么过滤异常值 - 降噪数据的利器 什么是异常值 在数据分析和机器学习领域&#xff0c;我们常常需要对数据进行预处理&#xff0c;其中一个常见的问题就是异常值。也可以称为噪声数据或离群点&#xff0c;指数据集中与其他值相差较大的点。通常这些异常值出现的原因有很…

6.10 面向对象抽象

抽象类 1 概念 Java中可以定义被abstract关键字修饰的方法,这种方法只有声明,没有方法体,叫做抽象方法. Java中可以定义被abstract关键字修饰的类,被abstract关键字修饰的类叫做抽象类 如果一个类含有抽象方法,那么它一定是抽象类 抽象类中的方法实现交给子类来完成 2 抽象…

MsSqlServer配置管理器TCP/IP属性

TCP/IP 属性&#xff08;“IP 地址”选项卡&#xff09; 使用 “TCP/IP 属性&#xff08;‘IP 地址’选项卡&#xff09;” 对话框&#xff0c;可以配置特定 IP 地址的 TCP/IP 协议选项。 只有选中 “IP All” &#xff0c;才能一次配置所有地址的 “TCP 动态端口” 和 “TCP…

Linux学习[16]bash学习深入2---别名设置alias---history指令---环境配置相关

文章目录 前言1. alias2. history3. 环境配置相关总结 前言 linux学习15里面简单提了一下alias指令&#xff0c;就表明它是一个别名的作用&#xff0c;这节就展开来写一下。 同时上一节一笔带过的history指令&#xff0c;这一节也进行例子的演示记录。 最后是环境相关的配置&a…

高斯过程(Gaussian Process)回归预测,例子,代码及可视化展示

高斯过程指的是一组随机变量的集合&#xff0c;这个集合里面的任意有限个随机变量都服从联合正态分布。&#xff08;联合正态分布是指多个随机变量的联合分布满足正态分布。联合分布是指多个随机变量同时满足的概率分布&#xff0c;一个常见的例子是考虑两个随机变量&#xff1…

【2023年最新】提高分类模型指标的六大方案详解

文章目录 数据增强特征选择调整模型参数模型集成迁移学习模型解释完结 当今&#xff0c;机器学习模型得到了广泛的应用&#xff0c;其中分类模型是其中最常见和重要的一种。在实际应用中&#xff0c;如何提高分类模型的指标&#xff0c;使其在不同场景下表现更佳并且具有更好的…

【Web网页制作】影视主题网页制作web页面开发(附源码)

【写在前面】 其实之前我就写过一篇关于我的家乡的页面&#xff0c;也有不少网友和我私下反馈&#xff0c;让我多出一些关于页面制作的&#xff0c;于是乎我就今天晚上抽出点时间来整理一篇关于影视内容的web页面制作&#xff0c;希望能够得到大家的喜欢。 【涉及内容】 web网页…