(1)Mapbox示例理解

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>Add a default marker</title><meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" /><script src="https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.js"></script><link href="https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.css" rel="stylesheet" /><style>body {margin: 0;padding: 0;}#map {position: absolute;top: 0;bottom: 0;width: 100%;}</style>
</head><body><div id="map"></div><script>mapboxgl.accessToken = 'pk.eyJ1IjoiaHpzejIwMjAiLCJhIjoiY2tjdm9pNHZpMDY3NzJ2czM4a2hjdjM1byJ9.Vt6klFZFg08r04OKYTQvrw';var map = new mapboxgl.Map({container: 'map',style: 'mapbox://styles/mapbox/streets-v11',glyphs: "mapbox://fonts/mapbox/{fontstack}/{range}.pbf",center: [12.550343, 55.665957],zoom: 8});var marker = new mapboxgl.Marker().setLngLat([12.550343, 55.665957]).addTo(map);</script></body></html>

效果图如下:

代码部分:部分待解决的参数说明如下:

  • sprite:mapbox地图使用的图标。
  • glyphs:mapbox地图使用的标注字体。

将mapbox离线本地化时,在显示图标问题上需要解决图标和字体的本地化。在图标离线本地化方面,mapbox使用了一个png图片和一个json位置描述信息json文件来展示图标的方法策略,这里先不展开,感兴趣的小伙伴可以交流。本文主要解决标注字体可视化的问题。

(2)pbf字体格式转换

mapbox中使用的字体pbf格式的,Mapbox GL JS加载字体是采用的分段式加载的,而不是整个字体库加载,这样做是为了降低加载时间过长的问题。根据字符编码范围进行分段,Unicode字符采用2个字节编码,所以字符的编码的范围是[0, 65535],Mapbox GL JS按照每段长度256的方式,平均分为若干段。注意,每一段字体请求的命名方式为start-end.pbf。比如第一段则是0-255.pbf,以此类推。mapbox/node-fontnik工具可以把otfttf字体转换为Mapbox GL使用的protobuf格式的SDF字体,感兴趣的可以参考这篇文章https://www.jianshu.com/p/23634e54487e  ,转换工具代码可以去我上传的资源中免积分下载。

我这里使用的是转化好的pbf字体库,里面包含了需要的字体,索性直接用了。

字体链接及提取码在这里了,直接用即可,可以免去很多麻烦:

链接:https://pan.baidu.com/s/1zAeaG8DXaBhiPxqyr3GKeQ 
提取码:6dyr

(3)vue中引入pbf字体

在上面代码段中将style中的glyphs参数修改为以下样式即可,

glyphs: "../../../../../static/glyphs/mapbox/{fontstack}/{range}.pbf"

注意引入的路径,不然会报404

我在实际操作的过程中由于vue版本的问题遇到了一些坑,主要是pbf字体存放位置的问题,应该放置在static目录下,然而在vue-cli 3版本没有static文件夹,本地文件应放在哪儿,如何引用呢?参考此文,解决了这个问题。建立一个与src同级的目录static文件,然后把静态资源放入该文件夹下,字体显示!字体本地化部署完成了。

参考博文:https://www.jianshu.com/p/43ce4591c621

https://www.jianshu.com/p/693f38ec5730

https://www.cnblogs.com/huangqiao/p/7798887.html

希望与大家一起交流学习关于vue和mapboxgl相关gis知识及问题,

vue中Mapbox的字体本地化部署解决方案相关推荐

  1. VUE中动态改变字体大小

    VUE中动态改变字体大小 父组件将自己的数据传递送给子组件展示,子组件监听click操作,emit发送出去,父组件监听通过emit发送的信息,改变控制字体大小的postFontSize,通过style ...

  2. vue中怎么引入字体包(超详细)

    vue中怎么引入字体包 一.创建文件并添加字体包 1.在src里面的assets文件中创建text文件(没有assets文件可以自己创建一个,也可以不用此命名): 2.把字体包放入text文件,并创建 ...

  3. bug解决-Vue中img图片加载失败解决方案

    Vue 中img图片加载失败解决方案 bug:assets文件下的图片动态取得话,显示不出来. 解决方法:把图片放到public文件夹下 public是直接原封不动打包到dist里面

  4. 在vue中如何使用字体图标(阿里巴巴)

    在vue中如何使用字体图标(阿里巴巴) 1.选择需要的图标加入购物车. 2.打开购物车,添加至项目. 3.点击生成在线代码 4.点击下载至本地,放入需要文件夹下,可以放入assets下. 5.在sty ...

  5. 系列九、vue中css样式字体设置为华文行楷

    一.下载华文行楷字体 # 下载地址 https://file.diyiziti.com/front/download/common/download?id=91# 百度网盘分享地址 链接:https: ...

  6. vue中替换全局字体

    引子:工作中需要搭建一个页面,微软雅黑是不支持商用的,需要全局替换成其他字体. 文章目录 一.下载字体 二.引入字体 1.在项目资源目录下新建一个font文件夹,引入下载好的字体文件 2.编写css文 ...

  7. 【Vue+Mapbox】Vue中mapbox地图的使用(一)

    唉,之前写的代码找不到了,码一下,方便自己以后使用. STEP 1(安装mapbox使用包): 官网提示[Module bundler] 在Vue终端执行上述操作,直到出现成功提示. STEP 2(在 ...

  8. 梳理详细 vue中引入第三方字体图标库iconfont

    最近在项目中需要使用第三方图标库,我选择了阿里的iconfont.记录下学习过程.在网上查阅资料的时候,发现很多教程写的比较模糊,一些博主只是提供一种可实现的方式,但是并没有完全区分iconfont的 ...

  9. vue中引入第三方字体图标库iconfont,及iconfont引入彩色图标

    iconfont字体图标使用就不多说了,大致是几部: 1.在iconfont官网选图标,加入购物车,加入项目,下载到本地,解压 2.在项目assets目录新建目录iconfont,用于存放刚才下载解压 ...

最新文章

  1. 在MM32F3273上运行MicroPython,对于性能进行测试
  2. java 传参字符串数组_JAVA语言之okhttp传递数组参数
  3. 洛谷P1434 [SHOI2002]滑雪
  4. 监听列表事件的监控核心技术(编写代码)
  5. Hadoop(一)之初识大数据与Hadoop
  6. 外设驱动库开发笔记38:RTD热电阻测温驱动
  7. 地府后台管理系统30.已经在开发中,介绍下目前的工作进度和未来展望
  8. UVA665 LA5658 False coin【暴力】
  9. overfeat 测试
  10. kettle日志解析_Kettle运行日志记录
  11. php课程banner,5种关于banner图的实例代码
  12. android的数据存储(3)(LitePal)
  13. win10更新后开不了机_win10开机关机正常,重启特别慢问题排查
  14. d435i 深度相机运行踩坑大合集
  15. 单相电枢绕组产生的磁通势
  16. 【AI创造营】鬼畜小视频
  17. YGG 与 Web3 平台 Strider 达成合作,用 DAO 工具和资源为创作社区赋能
  18. iOS 设置个人头像
  19. android 高德坐标对象,android: 高德地图
  20. 万法简史(肯威尔伯)

热门文章

  1. 刘韧:Blog改变着网络媒体
  2. Esxi6.7直通板载USB控制器给Linux虚拟机并使用USB无线网卡(CF-812AC)上网
  3. 父类和子类间引用要注意的问题
  4. SpringBoot 单元测试(一)SpringBootTest
  5. 基于国密SM3算法(openssl接口)密钥派生函数KDF的实现
  6. STL-源码剖析 简单总结
  7. 多线程试验。模拟航班售票系统,实现4个售票窗口发售某班次航班的100张机票,一个售票窗口用一个线程表示。要求不能重复发售。
  8. python写的mysql清库脚本,可根据表名分类
  9. Github库名命名规范
  10. 好看视频爬取 函数