AntV L7初体验

news2025/1/23 3:44:34

本案例使用L7库和Mapbox GL JS创建的简单地图可视化示例,加载点数据。

文章目录

  • 1. 引入 CDN 链接
  • 2. 导出模块
  • 3. 创建地图
    • 3.1. 注册 token
    • 3.2. 创建地图实例
  • 4. 创建场景
  • 5.创建点图层
  • 6. 演示效果
  • 7. 代码实现

1. 引入 CDN 链接

<!-- 1.引入CDN链接 -->
<!-- 引入l7库 -->
<script src="https://unpkg.com/@antv/l7"></script>
<!-- 引入mapbox-gl库 -->
<script src="https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapbox-gl.js"></script>
<!-- 引入mapbox-gl的CSS样式 -->
<link
  href="https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapbox-gl.css"
  rel="stylesheet"
/>

2. 导出模块

在这里我们导出 SceneMapbox 模块。

const { Scene, Mapbox } = L7;

3. 创建地图

3.1. 注册 token

mapboxgl.accessToken =
  "pk.eyJ1IjoiemhvbmdkaXNodW1hIiwiYSI6ImNsNXJoYXR5eTI2bGgzZW53d2didWF1c3AifQ.6vOplM2NQc_xnJW3aA5ZBA";

3.2. 创建地图实例

我们创建了一个Mapbox GL JS地图实例,设置了地图的容器、默认的地图风格、中心点坐标、地图级别以及默认的地图投影模式。

const map = new mapboxgl.Map({
  container: "map",
  style: "mapbox://styles/mapbox/streets-v12",
  center: [114.085947, 22.547],
  zoom: 5,
  projection: "globe",
});

4. 创建场景

Scene组件负责显示地图和其他图层。

const scene = new L7.Scene({
  id: "map",
  map: new Mapbox({
    mapInstance: map,
  }),
});

5.创建点图层

  • 使用fetch函数从 Alipay 对象存储中获取一个 JSON 文件。fetch函数是 JavaScript 中用于异步获取网络资源的内置函数。
  • 获取 JSON 文件后,使用JSON.parse()将其解析为 JavaScript 对象。
  • 解析后的 JavaScript 对象包含一个list属性,该属性是一个包含坐标和高度信息的数组。因此,我们可以使用L7.PointLayer创建一个点云图层,该图层使用data.list中的信息进行渲染。
  • 在创建点云图层时,我们可以使用parser属性来自定义数据的解析方式。这里,我们使用了一个名为json的解析器,它将 JSON 数据解析为xy坐标。
  • 使用shape属性定义点云的形状。在这里,我们使用cylinder形状。
  • 使用size属性定义点云的大小。这里,点云的大小根据高度(t)进行调整,使用函数来计算每个点云的大小。
  • 使用color属性定义点云的颜色。这里,我们使用一个颜色渐变,根据点云的高度(t)渐变颜色。
  • 使用style属性设置点云的一些基本样式,例如透明度(opacity)。
  • 将创建的点云图层添加到地图的图层列表中。
// 5.点数据可视化
fetch("https://gw.alipayobjects.com/os/rmsportal/oVTMqfzuuRFKiDwhPSFL.json")
  .then((res) => res.json())
  .then((data) => {
    // 创建点图层
    const pointLayer = new L7.PointLayer({})
      // 设置数据源
      .source(data.list, {
        // 设置数据格式
        parser: {
          type: "json",
          x: "j",
          y: "w",
        },
      })
      // 设置图形形状
      .shape("cylinder")
      // 设置图形大小
      .size("t", function (level) {
        // 根据等级返回图形大小
        return [1, 2, level * 2 + 20];
      })
      // 设置图形颜色
      .color("t", [
        "#094D4A",
        "#146968",
        "#1D7F7E",
        "#289899",
        "#34B6B7",
        "#4AC5AF",
        "#5FD3A6",
        "#7BE39E",
        "#A1EDB8",
        "#CEF8D6",
      ])
      // 设置图形透明度
      .style({
        opacity: 1.0,
      });
    // 将点图层添加到场景中
    scene.addLayer(pointLayer);
  });

6. 演示效果

image-20240228171437615

7. 代码实现

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>L7初体验</title>
    <!-- 1.引入CDN链接 -->
    <!-- 引入l7库 -->
    <script src="https://unpkg.com/@antv/l7"></script>
    <!-- 引入mapbox-gl库 -->
    <script src="https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapbox-gl.js"></script>
    <!-- 引入mapbox-gl的CSS样式 -->
    <link
      href="https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapbox-gl.css"
      rel="stylesheet"
    />
    <style>
      * {
        padding: 0;
        margin: 0;
      }
      body {
        overflow: hidden;
      }
      #map {
        width: 100vw;
        height: 100vh;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      // 2.导出 Scene 和 Mapbox 模块
      const { Scene, Mapbox } = L7;
      // 3.创建地图
      // 3.1注册token
      mapboxgl.accessToken =
        "pk.eyJ1IjoiemhvbmdkaXNodW1hIiwiYSI6ImNsNXJoYXR5eTI2bGgzZW53d2didWF1c3AifQ.6vOplM2NQc_xnJW3aA5ZBA";
      // 3.2创建地图实例
      const map = new mapboxgl.Map({
        container: "map",
        style: "mapbox://styles/mapbox/streets-v12",
        center: [114.085947, 22.547],
        zoom: 5,
        projection: "globe",
      });
      // 4.创建场景
      const scene = new L7.Scene({
        id: "map",
        map: new Mapbox({
          mapInstance: map,
        }),
      });

      // 5.创建点图层
      fetch(
        "https://gw.alipayobjects.com/os/rmsportal/oVTMqfzuuRFKiDwhPSFL.json"
      )
        .then((res) => res.json())
        .then((data) => {
          // 创建点图层
          const pointLayer = new L7.PointLayer({})
            // 设置数据源
            .source(data.list, {
              // 设置数据格式
              parser: {
                type: "json",
                x: "j",
                y: "w",
              },
            })
            // 设置图形形状
            .shape("cylinder")
            // 设置图形大小
            .size("t", function (level) {
              // 根据等级返回图形大小
              return [1, 2, level * 2 + 20];
            })
            // 设置图形颜色
            .color("t", [
              "#094D4A",
              "#146968",
              "#1D7F7E",
              "#289899",
              "#34B6B7",
              "#4AC5AF",
              "#5FD3A6",
              "#7BE39E",
              "#A1EDB8",
              "#CEF8D6",
            ])
            // 设置图形透明度
            .style({
              opacity: 1.0,
            });
          // 将点图层添加到场景中
          scene.addLayer(pointLayer);
        });
    </script>
  </body>
</html>

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

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

相关文章

泰迪智能科技-2024年高校大数据人才培养探索模式

随着数字经济的高速发展&#xff0c;对于大数据人才的需求日益增长。产业数字化和数字产业化之间的关系&#xff0c;已经成为推动社会发展的关键。为此&#xff0c;高校及产业界需要紧密配合&#xff0c;以培养出符合时代需求的大数据人才。 数字产业化与产业数字化高速发…

HarmonyOS NEXT应用开发案例集

概述 随着应用代码的复杂度提升&#xff0c;为了使应用有更好的可维护性和可扩展性&#xff0c;良好的应用架构设计变得尤为重要。本篇文章将介绍一个应用通用架构的设计思路&#xff0c;以减少模块间的耦合、提升团队开发效率&#xff0c;为开发者呈现一个清晰且结构化的开发…

windows11配置电脑IP

windows11配置电脑IP 选择"开始>设置>“网络&Internet >以太网”。在 "属性"下&#xff0c;编辑IP地址&#xff0c;子网掩码&#xff0c;网关以及DNS。

Qt ini配置文件

ini文件用于保存用户的设置操作&#xff0c;下列以背景颜色设置为例子 暂时默认设置为白色背景 这段代码放置在主窗口的构造函数中&#xff0c;用于初始化读取ini文件 QString color;QSettings *set new QSettings("color.ini",QSettings::IniFormat);set->begi…

《探索虚拟与现实的边界:VR与AR谁更能引领未来?》

引言 在当今数字时代&#xff0c;虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;技术正以惊人的速度发展&#xff0c;并逐渐渗透到我们的日常生活中。它们正在重新定义人与技术、人与环境之间的关系&#xff0c;同时也为各行各业带来了全新的可能性。…

学术论文GPT的源码解读与二次开发:从ChatPaper到gpt_academic

前言 本文的前两个部分最早是属于此旧文的《学术论文GPT的源码解读与微调&#xff1a;从ChatPaper到七月论文审稿GPT第1版》&#xff0c;但为了每一篇文章各自的内容更好的呈现&#xff0c;于是我今天做了以下三个改动 原来属于mamba第五部分的「Mamba近似工作之线性Transfor…

【YOLO v5 v7 v8 v9小目标改进】RevCol:解决深度学习信息从低层(输入)传递至高层(输出)的过程中,信息会逐层丢失问题

RevCol&#xff1a;解决深度学习信息从低层&#xff08;输入&#xff09;传递至高层&#xff08;输出&#xff09;的过程中&#xff0c;信息会逐层丢失问题 学习解耦表示可逆列网络&#xff08;RevCol&#xff09;子特征1&#xff1a;多级可逆单元子特征2&#xff1a;可逆列架构…

实践航拍小目标检测,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建无人机航拍场景下的小目标检测识别分析系统

关于无人机相关的场景在我们之前的博文也有一些比较早期的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《deepLabV3Plus实现无人机航拍目标分割识别系统》 《基于目标检测的无人机航拍场景下小目标检测实践》 《助力环保河道水质监测&#xff0c;基于yolov…

LLM | GPT-NEOX论文详解

GPT-NEOX使用旋转位置编码。模型权重使用float16表示。最大序列长度为2048。 论文题目&#xff1a;2022.04.14_GPT-NeoX-20B: An Open-Source Autoregressive Language Model 论文地址&#xff1a;2204.06745.pdf (arxiv.org) 论文代码&#xff1a;EleutherAI/gpt-neox: An imp…

初次安装WordPress后如何进行网站设置(主题安装、插件安装、网站美化、网站备份、安全性提升、伪静态、多域名设置等)WordPress网站常见问题设置指南

专栏地址: WordPress建站主题美化系列教程https://blog.csdn.net/seeker1994/category_12184577.html 一文搞懂WordPress是什么?为什么用它建站?怎么安装与部署? 使用腾讯云快速搭建WordPress网站流程详解 ...... 1. 前言 专栏上几篇文章介绍了小白零基础如何使用腾讯…

Golang的Channel源码阅读、工作流程分析。

Channel整体结构 源码位置 位于src/runtime下的chan.go中。 Channel整体结构图 图源&#xff1a;https://i6448038.github.io/2019/04/11/go-channel/ Channel结构体 type hchan struct {qcount uint // total data in the queuedataqsiz uint // si…

09 |「ViewPager」

前言 实践是最好的学习方式&#xff0c;技术也如此。 文章目录 前言一、ViewPager 简介二、ViewPager 与 Fragment 结合1、ViewPager Fragment 实现底部页面导航2、ViewPager Fragment BottomNavigationView 实现底部页面导航3、ViewPager Fragment TabLayout 实现底部页面…

分类算法(Classification algorithms)

逻辑回归(logical regression&#xff09;&#xff1a; 逻辑回归这个名字听上去好像应该是回归算法的&#xff0c;但其实这个名字只是在历史上取名有点区别&#xff0c;但实际上它是一个完全属于是分类算法的。 我们为什么要学习它呢&#xff1f;在用我们的线性回归时会遇到一…

WPF 自定义彩色控制台功能

文章目录 前言环境流内容一个简单的控制台 自动添加数据无法添加数据模板代码添加参数简单的案例添加和清空功能完善代码 额外功能添加移动到底部添加样式 总结 前言 在WPF中添加模拟控制台&#xff0c;可以试试的看到最新的日志信息。但是普通的TextBlock只是纯粹的黑色&…

【C++】十大排序算法之 堆排序 计数排序

本次介绍内容参考自&#xff1a;十大经典排序算法&#xff08;C实现&#xff09; - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a;通过比较来决定元素间的相对次序…

腾轩科技传媒讲解律师事务所创建百度词条的流程

在当今信息爆炸的时代&#xff0c;律师事务所需要在互联网上留下自己的痕迹&#xff0c;为了提升品牌知名度和业务曝光度&#xff0c;很多律师事务所选择在百度百科创建词条。但是&#xff0c;创建词条并不是一件简单的事情&#xff0c;需要注意许多细节和规定。本文腾轩科技传…

美国站群服务器使用技巧与注意事项

美国站群服务器使用技巧与注意事项有哪些?RAKsmart小编为您整理发布美国站群服务器使用技巧与注意事项&#xff0c;希望对您有帮助。 美国站群服务器的使用技巧主要包括远程管理、灵活配置和备份还原&#xff0c;具体如下&#xff1a; 1. **远程管理**&#xff1a;用户可以通过…

SpringBoot集成ElasticSearch(ES)

ElasticSearch环境搭建 采用docker-compose搭建&#xff0c;具体配置如下&#xff1a; version: 3# 网桥es -> 方便相互通讯 networks:es:services:elasticsearch:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/elasticsearch:7.14.1 # 原镜像elasticsearch:7.…

Python】深度学习基础知识——随机梯度下降详解和示例

本文通过原理和示例对随机梯度下降进行了详解&#xff0c;并和梯度下降进行了对比分析&#xff0c;简单易懂。 随机梯度下降原理示例 动态学习率动态学习率示例 总结 随机梯度下降 原理 示例 import torch import torch.nn as nn import matplotlib.pyplot as pltdef train_2…

Vue.js大师: 构建动态Web应用的全面指南

VUE ECMAScript介绍什么是ECMAScriptECMAScript 和 JavaScript 的关系ECMAScript 6 简介 ES6新特性let基本使用const不定参数箭头函数对象简写模块化导出导入a.jsb.jsmain.js Vue简介MVVM 模式的实现者——双向数据绑定模式 Vue环境搭建在页面引入vue的js文件即可。创建div元素…