Vue项目中使用MapboxGL开发3D地图教程(一)MapboxGL介绍以及前期vue项目的搭建

news2024/11/15 19:53:45

MapboxGL介绍以及前期vue项目的搭建

      • 1、Mapbox-gl简介
      • 2、搭建vue项目
        • 2.1、创建vue项目
        • 2.2、注册mapbox官网
        • 2.3、mapbox-gl入门案例
      • 3、Mapbox-gl地图主要配置参数说明

1、Mapbox-gl简介

Mapbox-gl是一个开源、基于webgl技术的前端地图类库。

在这里插入图片描述

地图数据渲染和可视化这块我们经常用到的有商业使用的如:百度地图API和JS、高德地图的API和JS、ESRI的arcgis的全家桶,同时也有开源的一些地图引擎如:openlayers、mapboxgl、Leaflet等。

Mapbox的最大贡献:

它制定了MBTiles瓦片存储规范和Mapbox Vector Tile(Mapbox
矢量瓦片),可以说是制定了行业标准,对GIS行业有很大的影响。

在这里插入图片描述

官方文档(英文):https://docs.mapbox.com/mapbox-gl-js/api/
案例: https://docs.mapbox.com/mapbox-gl-js/example/

2、搭建vue项目

2.1、创建vue项目

可以使用vue cli脚手架搭建一个vue项目(此步骤省略)

2.2、注册mapbox官网

Mapbox官网注册一个账号,生成一个开发token,需要注意的是,注册过程中需要一张支持跨境国际业务的信用卡账号。信用卡随机码

另外在mapbox-gl在使用自搭建的后台地图服务时,可以通过修改源码,把需要token权限的方法注释掉,因而不使用此token就可以使用mapbox,具体方法如下:

从github上克隆一份mapbox-gl的源码,最好是按照版本进行克隆,这样代码比较稳定,yarn或者npm安装代码所需要的依赖包,确定安装成功,能按照package.json进行文件build,才进行修改。

需要修改的文件:

mapbox-gl-js-2.2.0\src\ui\map.js

文中代码开始位置:

/***** START WARNING - REMOVAL OR MODIFICATION OF THE

其中 _authenticate()引用注释掉,就能达到去掉token的效果。

上边的警告,需要仔细看一下,开源协议修改后,这段代码,官方不允许修改,在商业应用中,需要注意。

2.3、mapbox-gl入门案例

安装npm软件包

npm install --save mapbox-gl

按需引入mapbox-gl 样式文件

import 'mapbox-gl/dist/mapbox-gl.css';

js中使用mapboxgl


import mapboxgl from 'mapbox-gl'; // or "const mapboxgl = require('mapbox-gl');"

mapboxgl.accessToken = 'pk.xxxxx自己申请的token';
const map = new mapboxgl.Map({
    container: 'map', // container ID
    style: 'mapbox://styles/mapbox/streets-v12', // 地图样式URL
    center: [110, 40], // 地图起始位置
    zoom: 2, // 地图起始比列
});

效果:
在这里插入图片描述

3、Mapbox-gl地图主要配置参数说明

在mapbox-gl地图初始化时,可以对地图主要配置参数进行修改:(未涉及的请参见mapbox-gl官方文档)

  • options.antialias(布尔型):是否设置抗锯齿(平滑),默认值是false;
  • options.bearing(数值型):地图默认逆时针偏北旋转角度值(度数),默认值是0;
  • options.bounds(经纬度范围型):地图初始化的显示范围,如设置这个属性,设置的center和zoom属性不起作用,默认值是null;
  • options.center(经纬度坐标型):地图初始化的中心点坐标,默认值为[0,0];
  • options.crossSourceCollisions(布尔型):symbol(符号)的碰撞是否叠加多数据源分析,true时,所有symbol的数据源都计算,false只计算单独的数据源;
  • options.doubleClickZoom(布尔型):是否允许鼠标双击放大交互,true为允许,false为不允许;
  • options.dragPan(布尔型):是否允许鼠标拖动地图移动;
  • options.dragRotate(布尔型):是否允许鼠标按住旋转地图;
  • options.hash(布尔型|字符串型):是否在浏览器的地址栏上显示地图的缩放、中心坐标等信息,且能够通过设置参数显示自定义显示;
  • options.interactive(布尔型):是否允许鼠标、触摸或者键盘和地图进行交互操作;
  • options.maxBounds(经纬度范围型):设置地图的最大浏览观看范围;
  • options.maxPitch(数字型):设置地图观看的最大倾角(pitch);
  • options.maxZoom(数字型):设置地图的最大缩放等级;
  • options.minPitch(数字型):设置地图观看的最小倾角(pitch);
  • options.minZoom(数字型):设置地图的最小缩放等级;
  • options.pitch(数字型):设置地图的初始倾斜角;
  • options.pitchWithRotate(布尔型):设置是否允许地图倾角控件上的拖拽旋转;
  • options.preserveDrawingBuffer(布尔型):设置为true时,能够通过获得地图的canvas控件,将地图导出成图片,为了优化性能,默认值设置为false;
  • options.projection(坐标系代码):设置地图的坐标系,mapbox-gl初期不支持多坐标系,后期添加了Albers (‘albers’), Equal Earth (‘equalEarth’), Equirectangular/Plate Carrée/WGS84 (‘equirectangular’), Lambert (‘lambertConformalConic’), Mercator (‘mercator’), Natural Earth (‘naturalEarth’), and Winkel Tripel (‘winkelTripel’)坐标系支持;
  • options.scrollZoom(布尔型|对象):设置是否允许鼠标滚轮控制地图放大缩小;
  • options.style(对象|字符串):地图的样式配置文件,包含地图的数据源、图层等信息;
  • options.zoom(数字型):设置地图的初始化缩放级别。

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

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

相关文章

第七章 详细设计

结构化程序设计的基本结构包括 顺序结构、选择结构、循环结构 三种。 详细设计层 详细设计概览 详细设计的任务:定义每一模块 三种控制结构:顺序、选择、循环 伪码 伪码是一种混合语言。外 部采用形式语言定义控制 结构和数据结构,内部使…

OpenGL光照之投光物

文章目录 平行光点光源衰减实现衰减 聚光手电筒平滑/软化边缘完整代码 我们目前使用的光照都来自于空间中的一个点。它能给我们不错的效果,但现实世界中,我们有很多种类的光照,每种的表现都不同。将光投射(Cast)到物体的光源叫做投光物(Light…

算法提高-图论- 最小生成树的扩展应用

最小生成树的扩展应用 最小生成树的扩展应用AcWing 1146. 新的开始AcWing 1145. 北极通讯网络AcWing 346. 走廊泼水节AcWing 1148. 秘密的牛奶运输 最小生成树的扩展应用 AcWing 1146. 新的开始 利用虚拟源点建图和原题的题意是等价的,因此我们使用虚拟源点建图套…

主从架构lua脚本-Redis(四)

上篇文章介绍了rdb、aof持久化。 持久化RDB/AOF-Redis(三)https://blog.csdn.net/ke1ying/article/details/131148269 redis数据备份策略 写job每小时copy一份到其他目录。目录里可以保留最近一个月数据。把目录日志保存到其他服务器,防止机…

服务器网站搭建(一)

文章目录 环境搭建域名购买和解析创建网站环境搭建 一台服务器,我买的腾讯云新加坡的。根据需求选择配置。 重置密码: 自己设置的密码要记住: 登录: 安装宝塔(centos系统),参考官网: https://www.bt

Python 接口测试框架

目录结构定义 首先来看一下项目整体的结构 框架结构 代码结构 Excel 文件结构 代码详细解析 1.工具包 tools 封装操作 excel 方法 excel_operation.py import xlrd from config.config import PROJECT_PATHclass OperationExcel:def __init__(self, file_nameNone, sheet_…

县村快递物流小程序 v1.2.63+前端(本站修复版)

🎈 限时活动领体验会员:可下载程序网创项目短视频素材 🎈 🎉 有需要的朋友记得关赞评,文章底部来交流!!! 🎉 ✨ 源码介绍 核心功能: 1、县分拣中心入库出库 2…

什么是Vue的脚手架(Vue CLI)?

什么是Vue的脚手架(Vue CLI)? Vue.js 是一款流行的 JavaScript 框架,用来构建现代的单页面应用程序(SPA)。Vue.js 的核心库提供了丰富的功能和 API,但是创建一个完整的应用程序需要更多的工具和…

浏览器插件 | Font Picker - 网页字体识别工具

目录 软件简介 Font Picker插件背景 Font Picker插件离线安装教程 Font Picker 小结 软件简介 Font Picker 插件是一款用于 Chrome 浏览器的字体选择器,这种网页字体识别工具看起来非常的干净,使用起来也十分的简单。本文提供Font Picker网页字体…

d3dcompiler_43.dll文件丢失怎么修复,最新修复方法分享

本教程操作系统:Windows系统、 d3dcompiler_43.dll是电脑文件中的dll文件(动态链接库文件)。如果计算机中丢失了某个dll文件,可能会导致某些软件和游戏等程序无法正常启动运行,并且导致电脑系统弹窗报错。 在我们打开…

【LeetCode】110. 平衡二叉树

110. 平衡二叉树(简单) 思路 对二叉树做先序遍历,从底至顶返回子树最大高度,若判定某子树不是平衡树则“剪枝”直接向上返回。 递归返回值: 当节点 root 左、右子树的高度差 > 1:返回 -1,代…

吴恩达471机器学习入门课程1第1周

文章目录 1加载数据集2计算COST(均值平方差,1/2m(y_pre - y))3计算梯度4画出成本曲线5梯度下降 import math, copy import numpy as np import matplotlib.pyplot as plt plt.style.use(./deeplearning.mplstyle) from lab_utils_uni import plt_house_x, plt_conto…

OpenMMLab-AI实战营第二期——4-2.MMDetection代码课

文章目录 1. MMDetection介绍(vs MMSegmentation,mmdetection3d)2. 代码2.1 使用pycocotools配合exif可视化图像2.2 mmdetection中config的继承2.3 mmdet的数据集可视化问题(VISUALIZERS)2.4 pin_memory参数设置2.5 ma…

康佳液晶电视(非智能)Mstar V56 芯片

    2023/6/11 下午8:10:01 康佳用的地面波数字电视解码芯片是?  2023/6/11 下午8:10:08 康佳电视使用的地面波数字电视解码芯片可能因不同的产品型号而有所不同。然而,根据…

【AI作画】使用DiffusionBee with stable-diffusion在mac M1平台玩AI作画

DiffusionBee是一个完全免费、离线的工具。它简洁易用,你只需输入一些标签或文本描述,它就能生成艺术图像。 DiffusionBee下载地址 运行DiffusionBee的硬性要求:MacOS系统版本必须在12.3及以上 DBe安装完成后,去C站挑选自己喜欢…

ur机器人在moveit中运行环境搭建(保姆级)

ur机器人在moveit中运行环境搭建 我的系统是ubuntu20.04 rosb版本: noetic 1.安装运动学插件 sudo apt-get install ros-noetic-trac-ik-kinematics-plugin 2.安装 eigenpy 需要单独编译,EigenPy是一个用于在Python中使用Eigen库的绑定库 git clone https://github.com/…

[MAUI]写一个跨平台富文本编辑器

文章目录 原理创建编辑器定义实现复合样式选择范围字号字体颜色与背景色字体下划线字体加粗与斜体 序列化和反序列化跨平台实现集成至编辑器 创建控件使用控件最终效果已知问题项目地址 富文本编辑器是一种所见即所得(what you see is what you get 简称 WYSIWYG)文本编辑器&am…

visual studio 2022,ADO.NET 实体数据模型添加 sqlite数据库对象

文章目录 前言前期环境博客github 文档解析文件安装说明文件下载省流版nuget环境配置成功标志sqlite连接测试 前言 我们知道ADO.NET 实体数据模型特别适合动态开发数据库。因为ADO.NET可以使用DB First 开发 我们在开发一个程序的时候,经常会动态更新数据库字段&a…

Python的基础语法知识

1、变量 变量是一个代号,它代表的是一个数据。 在Python中,定义一个变量的操作包含两个步骤: ①为变量起一个名字 ②为变量指定其所代表的数据 这两个步骤在同一行代码中完成。 1.1 变量的命名规则 变量名可以由任意数量的字母、数字、下划…

Unity 简易UI管理器

首先我们需要先定义这么一个UIManager类。 public class UIManager { } UI管理器嘛,顾名思义肯定是用来管理我们游戏中的UI的,而我们游戏当中的UI呢一般是以面板为单位来进行划分的。所以我们还需要一个UI面板类。然后通过我们的UI管理器来管理我们的U…