Cesium加载Mapbox自定义地图

news2024/12/23 18:08:19


Cesium 加载影像地图,一般都是天地图,高德地图,必应地图,谷歌地图等。

如果真实项目中想要自定义地图的风格样式,为了配合相应的页面UI风格,这些公共免费的影像地图就满足不了需求。

但是MapBox可以支持自定义风格样式,并且有公共的一些地理数据支持;如果公共地理数据满足不了需求,还可以自己上传矢量和栅格数据;

Cesium中也有相应的接口支持加载渲染。

MapBox Studio 自定义地图样式


MapBox 个人工作台有三个 Tab 选项

  • Styles:地图自定义样式
  • Tilesets:自定义上传的矢量或栅格数据,能上传 300MB 以内的 GeoJSON 文件,不能修改
  • Datasets:自定义上传的矢量或栅格数据,只能上传 20MB 以内的 GeoJSON 文件,支持修改

注意:

  • Tilesets 上传数据后已经设置好了显示缩放范围,比如全国省市行政区划就被默认设成了5-22,就比较麻烦
  • Styles 里面的图层,可以根据以前的地图风格复制一份,这样图层数据就不需要重新添加了
  • Styles 自定义地图风格完成后,点击 Publish 进行发布,默认为私人的,记录 share 中的 styleId

在这里插入图片描述

Cesium.MapboxStyleImageryProvider接口

MapBox Studio 制作好地图风格后,可以将此地图数据 SharePublish,并在 Share 界面记录下此地图的唯一标识值 styleId

此时,自定义地图已经完成,只剩下在 Cesium 场景页面中加载渲染了

方式一:


其中 url , username , token 都为固定,可以从 MapBoxShare 页面上获得

方式二:

注意:为了优化渲染效果,Cesium场景可以设置以下参数:

  • 场景模式:设为 2D模式 或者 哥伦布2.5D模式
  • 地图投影方式:设为墨卡托投影方式,球面默认投影方式为地理投影
  • 最大缩放高度限制9392000米,因为层级再缩小,此层级北京附近 label 显示有缺失的小bug

总结分析:

  • MapBox地图风格自定义,自由化定制
  • Cesium有专门的接口去对接地图风格,方便快捷
  • 请求 MapBox 的免费瓦片接口,很慢,会有些延迟卡顿的加载,浏览体验不佳,如果将瓦片数据加入缓存后,再次请求就会好一些

Cesium.MapboxImageryProvider接口

使用 mapbox-gl.jsMVTImageryProvider.js

Mapbox StudioShare 页面下载样式文件 style.json,将样式文件引入,赋值给 stylemapbox-gl 将样式文件的数据解析后,生成 canvas ,渲染到场景中

注意:引入 MVTImageryProvider.js 后,调用 style 文件,需要提前设置 mapbox.accessToken

优缺点分析

  • 对非开发人员友好,当新建项目,需要配置一个新风格的地图时,实施人员可以直接在 Mapbox Studio 编辑器中编辑地图样式,不需要写代码。当编辑好后,直接下载样式文件引入到 Cesium 相应页面,就可以使用了

  • mapbox-gl 加载地图数据,不是瓦片数据,全是矢量数据,然后全部用主题样式渲染一遍,生成canvas渲染到地球上,所以数据量大的时候,非常占性能,需要等待地图数据加载完成,地球缩放的时候非常影响观看效果。

  • 验证的时候全国只显示行政区域和边界,效果理想,加上行政名称,就非常卡顿了,若是城市级或全国级,不要求高精度的数据展示,可以考虑此方案。

– 欢迎点赞、关注、转发、收藏【我码玄黄】,gonghao同名

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

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

相关文章

python之日志(三)--将捕获的异常写入日志中

1.日志级别 import logging #日志模块 #默认下只会从第3级开始打印 logging.debug(DEBUG级别) #1级 logging.info(INFO级别) #2级 logging.warning(WARNING级别) #3级 logging.error(ERROR级别) #4级 logging.critical(CRITICAL级别) #5级 默认第1和第2级的日志不会打印 …

原子阿波罗STM32F767程序的控制器改为STM32F407驱动LCD屏

由于手里没有原子大神的F429开发板,又还想学习原子大神的F429开发板程序,前几天,经过更换控制器,成功把原子大神的F429开发板程序用到了F407开发板上,驱动LCD屏显示成功,目的,就是熟悉原子大神的…

2024 年 5 月公链研报:监管调整与市场新动向

作者:stellafootprint.network 数据来源:公链 Research 页面 五月份,加密货币市场经历了重要的监管和政治动态。美国证券交易委员会(SEC)批准了现货以太坊 ETF 的初步申请文件,这一举措提振了以太坊及其…

2024年高考,应该选择哪些专业和学校?

2024年高考已经告一段落,目前,高考评卷工作正在有序进行,马上进入紧张时期的是考生如何选择院校,填报志愿。在分数限制下,选择哪些专业和好学校,需要综合考虑多个因素。以下是基于当前信息的一些建议&#…

环境科学SCI期刊,IF=8.5+,期刊发展势头非常好

一、期刊名称 SUSTAINABLE DEVELOPMENT 二、期刊简介概况 期刊类型:SCI 学科领域:环境科学与生态学 影响因子:8.562 中科院分区:2区 三、期刊征稿范围 该期刊是一本跨学科出版物,旨在解决和讨论实现可持续发展的…

看穿人性!现货白银交易的一些博弈心得

很多投资者认为现货白银交易最应该讲求的是交易技巧,但交易的技巧和套路是“死”的,行情走势却是“活”的,投资者需要在实践中不断地累积经验和总结心得,才能更加灵活地面对行情走势的变化,逐步达至盈利的理想彼岸。 无…

Python私教张大鹏 Vue3整合AntDesignVue之Form 表单

何时使用 用于创建一个实体或收集信息。 需要对输入的数据类型进行校验时。 表单 我们为 form 提供了以下三种排列方式: 水平排列:标签和表单控件水平排列;(默认) 垂直排列:标签和表单控件上下垂直排列…

js 实现将后端请求来的 Blob 数据保存到用户选择的任意目录

js实现将后端请求来的 Blob 数据保存到用户选择的任意目录 实现方式 实现方式 实现方式是使用 window 的 showSaveFilePicker 方法。Window 接口的 showSaveFilePicker() 方法用于显示一个文件选择器,以允许用户保存一个文件。可以选择一个已有文件覆盖保存&#xf…

一套上门家政小程序源码,java上门家政app源码,家政服务管理后台系统源代码

一套上门家政小程序源码,上门家政app源码,家政服务管理后台系统源码 家政上门系统开发端口组成:用户端app技工端apppc管理后台:Uniapp开发,系统可以打包:安卓、ios、h5、微信小程序、公众号。 一、用户端&…

Vue微前端架构与Qiankun实践理论指南

title: Vue微前端架构与Qiankun实践理论指南 date: 2024/6/15 updated: 2024/6/15 author: cmdragon excerpt: 这篇文章介绍了微前端架构概念,聚焦于如何在Vue.js项目中应用Qiankun框架实现模块化和组件化,以达到高效开发和维护的目的。讨论了Qiankun…

[数据集][实例分割]减速带分割数据集json+yolo格式5400张1类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件以及对应yolo格式txt) 图片数量(jpg文件个数):5400 标注数量(json文件个数):5400 标注数量(txt文件个数):5400 标注类别数:1 标注…

Vim基础操作:常用命令、安装插件、在VS Code中使用Vim及解决Vim编辑键盘错乱

Vim模式 普通模式(Normal Mode): 这是 Vim 的默认模式,用于执行文本编辑命令,如复制、粘贴、删除等。在此模式下,你可以使用各种 Vim 命令来操作文本。插入模式(Insert Mode)&#…

案例7.7_使用SFC/DISM工具修复系统

问题分享 用什么方法可以检测系统文件是否受损,又该如何修复呢?Windows 10操作系统可以用文件检查器检查和修复系统的受损文件.防范故障于未然。 (1)右击“开始”按钮.在弹出的快捷菜单中选择“命令提示符(管理员&am…

全域推广和标准推广可以一起做吗?可行性分析结果如何?

作为全域时代的新赛道,全域推广从出现之日起便备受关注,许多创业者经常将其与标准推广进行对比或捆绑,类似于全域推广和标准推广的区别、全域推广和标准推广哪个好以及全域推广和标准推广可以一起做吗等问题也因此长期霸占该赛道相关话题榜单…

【docker实战】使用Dockerfile的COPY拷贝资源遇到的问题

事情是这样的。 在我负责的golang项目中,使用硬代码验证某块逻辑。比如: 于是,为了解决硬代码的问题,我制作了表格工具:【开源项目】Excel数据表自动生成工具v1.0版 – 经云的清净小站 (skycreator.top)。 使用表格工…

Pytorch深度解析:Transformer嵌入层源码逐行解读

前言 本部分博客需要先阅读博客: 《Transformer实现以及Pytorch源码解读(一)-数据输入篇》 作为知识储备。 Embedding使用方式 如下面的代码中所示,embedding一般是先实例化nn.Embedding(vocab_size, embedding_dim)。实例化的…

Comfy UI使用最新SD3模型,并解决报错‘NoneType‘ object has no attribute ‘tokenize‘【实测可行】

解决Comfy UI使用最新SD3模型报错’NoneType’ object has no attribute ‘tokenize’ 前几天SD3发布了,所以想着尝尝鲜,便去下载了SD3来玩一玩。使用的是Comfy UI而不是Stable Diffusion UI,这是一个比SD UI更加灵活的UI界面,使用…

【Gradio】Building With Blocks 块中的状 态 + 动态应用程序与渲染装饰器

State in Blocks 块中的状态 我们介绍了接口中的状态,这个指南将看看块中的状态,其工作原理大致相同。 全局状态 块中的全局状态与接口中的工作原理相同。在函数调用外创建的任何变量都是所有用户共享的引用。 会话状态 Gradio 支持会话状态&#xff…

大模型-人类病理学的语言视觉AI助手

论文摘要翻译与评论 论文标题: A Multimodal Generative AI Copilot for Human Pathology 摘要翻译: 计算病理学领域已经在任务特定的预测模型和任务无关的自监督视觉编码器的发展方面取得了显著进展。然而,尽管生成性人工智能快速增长&a…

DBA常用论坛

1.ITPUB ITPUB技术论坛_专业的IT技术社区 2.ASKTOM Ask TOM