Advanced Mapbox Vector Tiles-高级Mapbox矢量贴图

知识要点

  1. (主要)使用此方法加载矢量地图可以在缩放级别时重用相同的源瓦片,一定程度上节省移动设备的带宽,网络环境不好时,可以达到提升地图加载速度的效果。
  2. (主要)调用mapbox地图服务需要在mapbox官网注册账号,在控制台获取APP的指定Access token令牌,这是能调取矢量地图的关键。
  3. (次要)openlayers官方实例为我们引入了mapbox地图样式V6版本,具体可查看源码中,/examples/resources/mapbox-streets-v6-style.js文件。

官网原文及译文

A vector tiles map which reuses the same source tiles for subsequent zoom levels to save bandwidth on mobile devices. Note: No map will be visible when the access token has expired.
矢量瓦片地图,在后续缩放级别时重用相同的源瓦片,以节省移动设备上的带宽。注意:当access token 访问令牌过期时,地图将不显示。

源码

<!DOCTYPE html>
<html lang="zn"><head><meta charset="UTF-8"><!-- 引入OpenLayers CSS样式 --><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.13.0/css/ol.css"type="text/css"><!-- 引入OpenLayers JS库 --><script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.13.0/build/ol.js"></script><!-- 引入mapbox地图样式V6版本 --><script src="https://openlayers.org/en/v6.13.0/examples/resources/mapbox-streets-v6-style.js"></script><!-- css代码 --><style>.map {width: 100%;height: 400px;background: #f8f4f0;}</style><title>Advanced Mapbox Vector Tiles-高级Mapbox矢量贴图</title>
</head><body><!-- html代码 --><div id="map" class="map"></div><!-- script代码 --><script>// 声明key变量,key的获取途径,进入mapbox官网 -> 注册账号 -> 创建APP -> 获取Access token,mapbox官网地址:https://www.mapbox.comconst key ='pk.eyJ1Ijoiemhhb3lhaHVpIiwiYSI6ImNsMDVhM2xmcjF3MWgzZXFoMXExb3luczYifQ.BL1X1DNYDd6UrlfEoCrGNA';// 计算匹配缩放级别1、3、5、7、9、11、13、15的分辨率const resolutions = [];for (let i = 0; i <= 8; ++i) {resolutions.push(156543.03392804097 / Math.pow(2, i * 2));}// 计算缩放级别1、3、5、7、9、11、13、15的tile urlfunction tileUrlFunction(tileCoord) {return ('https://{a-d}.tiles.mapbox.com/v4/mapbox.mapbox-streets-v6/' +'{z}/{x}/{y}.vector.pbf?access_token=' +key).replace('{z}', String(tileCoord[0] * 2 - 1)).replace('{x}', String(tileCoord[1])).replace('{y}', String(tileCoord[2])).replace('{a-d}','abcd'.substr(((tileCoord[1] << tileCoord[0]) + tileCoord[2]) % 4, 1));}// 初始化地图const map = new ol.Map({// 设置图层layers: [new ol.layer.VectorTile({source: new ol.source.VectorTile({// 设置归属标签attributions:'© <a href="https://www.mapbox.com/map-feedback/">Mapbox</a> ' +'© <a href="https://www.openstreetmap.org/copyright">' +'OpenStreetMap contributors</a>',// 瓦片的特征格式化,此处使用MVT表示mapbox vector tile(mapbox矢量瓦片)format: new ol.format.MVT(),// 瓦片网格tileGrid: new ol.tilegrid.TileGrid({// 瓦片网格的范围extent: ol.proj.get('EPSG:3857').getExtent(),// 分辨率级别数组resolutions: resolutions,// 瓦片尺寸tileSize: 512,}),// 获得给定的tile坐标和投影的tile URLtileUrlFunction: tileUrlFunction,}),// 调createMapboxStreetsV6Style函数, 应用mapbox专用样式style: createMapboxStreetsV6Style(ol.style.Style, ol.style.Fill, ol.style.Stroke, ol.style.Icon, ol.style.Text),}),],// 绑定页面元素target: 'map',// 设置视图view: new ol.View({center: [0, 0],minZoom: 1,zoom: 2,}),});</script>
</body></html>

效果截图

OpenLayers实例-Advanced Mapbox Vector Tiles-高级Mapbox矢量贴图相关推荐

  1. 点、线、面生成mvt(MapBox Vector Tile)格式的瓦片总结

    矢量切片可以以三种形式呈现:GeoJSON.TopoJSON 和 MapBox Vector Tile(.mvt),矢量切片技术继承了矢量数据和切片地图的双重优势,有以下优点: 瓦片以mvt格式的存储 ...

  2. mapbox矢量切片标准_Cesium 加载矢量切片(MapBox Vector Tile)

    矢量切片(vector tile)是当前 WebGIS 较热技术,国内的高德.百度等在线地图都使用了矢量切片技术.相较于传统栅格切片,矢量切片好处很多.简单几点就是:轻量.客户端渲染.还可加密(栅格切 ...

  3. H.266/VVC帧间预测技术学习:高级运动矢量预测(Advanced Motion Vector Prediction, AMVP)

    高级运动矢量预测模式(Advanced Motion Vector Prediction,AMVP) AMVP模式是H.265/HEVC中提出的新的MV预测技术,H.266/VVC仍采用了该技术,并在 ...

  4. GIS动态矢量切片(MVT——MapBox Vector Tile)

    GIS动态矢量切片 前言 有关矢量切片以及MVT(MapBox Vector Tile)自行搜索了解,不再赘述. 接口格式 http://domain:port/map/vector/tile/{z} ...

  5. Mapbox 笔记1(Mapbox 是如何工作的)

    文章目录 Mapbox 是如何工作的 Access Token Token的使用范围 URL 限制 创建和管理 access token 创建新数据 geojson数据格式 创建数据集 数据集转换为 ...

  6. 视频教程-Openlayers实例详解-其他

    Openlayers实例详解 国防科技大学计算机专业硕士研究生,IT公司技术支持部门负责人 胡灏 ¥598.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课 ...

  7. Mapbox加载天地图CGCS2000矢量瓦片地图服务

    1.背景 最近在做天地图的项目,要基于MapBox添加CGCS2000矢量切片数据,但是 Mapbox 只支持web 墨卡托(3857)坐标系的数据.Github有专业用户修改了mapbox-gl的相 ...

  8. Mapbox、GeoServer离线部署矢量地图

    Mapbox.GeoServer离线部署矢量地图 关键词:Mapbox.GeoServer.Tomcat.PostgreSQL.PostGis 一.地图数据获取 使用OpenStreetMap获取中国 ...

  9. GIS开发:Vector tiles切片工具

    vector tiles作为一种可以在客户端设置样式的切片图层,可以通过各类软件进行发布,例如Portal for ArcGIS.geoserver.MapServer等,客户端通过mapbox gl ...

最新文章

  1. Mac iStat Menu 注册码
  2. 用php文件创建表,使用PHP创建单个文件上传表单的最佳方式是什么?
  3. html 表单自动数值,web前端学习技术之对HTML5 智能表单的理解
  4. C# 仿金山毒霸启动和关闭淡入淡出效果
  5. 4kyu Path Finder #2: shortest path
  6. ASP.NET MVC分页实现
  7. linux来源usb驱动在哪下载,Linux USB驱动程序基础
  8. Linux故障解决(4)——新安装的CentOS 系统无法上网解决方法 (未知的名称或服务)
  9. docker run -di -p 日志_docker随手笔记第十一节 portainer.io安装使用,比k8s简单
  10. easyui 全部图标
  11. 证件阅读设备一般可以识别哪些证件
  12. 查询和01号学生学习的课程完全相同的其他同学的信息
  13. RabbitMQ的消息补偿机制
  14. golang windows 设置桌面背景和屏幕保护
  15. Android Menu 之 optionsMenu 详解
  16. 创客集结号:3D打印技术原理
  17. 一个开源的论坛系统AstalPathTalk
  18. mybatis-generator-tool工具的使用
  19. Python实现人机对话
  20. 小程序自定义菜单Navbar

热门文章

  1. 憋个大招!java开发简历模板免费下载
  2. ease,seae-in,ease-in-out,ease-out,效果
  3. rpm 安装jdk-6u45-linux-amd64.rpm发现需要依赖相关的库
  4. 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(五) --补遗 (已补充第三部分完整版)...
  5. Tinder翻牌子项目总结(类似探探、Tinder、Nice的翻牌子)
  6. 太康一高2021高考成绩查询,太康中考成绩查询2021
  7. 软件中的“黑马”,你知道的有哪些?
  8. VS Code Pylint出现E0611:No name 'Qt' in module 'PyQt5.QtCore'解决办法
  9. stdio.h头文件包含的函数有哪些?
  10. Codefores 460C-Present(二分+贪心)