Mapbox自定义字体

4 篇文章 0 订阅
3 篇文章 2 订阅

创建字体格式pbf

字体文件(ttf/otf)一般比较大(一般在10M左右,至少设计师给我的字体文件就是这般大),在网页中加载比较耗时。

mapbox加载的字体是经过处理的,加工成pbf格式。pbf格式文件是基于Google的Protocol Buffer协议进行组织,是一种二进制文件。Mapbox的矢量瓦片、字体都是采用这种数据结构进行存储、压缩的。

Mapbox官方提供了两种方式帮助我们字体转换成pbf格式(即ttf、otf => pbf)

  1. 开源工具 fontnik
  2. 在线服务 Fonts API

这两种方式都挺简单的,前者可用于本地化部署,后者是提供字体管理。

样式文件设置

在样式文件中的glyphs中设置成相应的字体服务,本地的字体地址如下:

http://localhost:3000/fonts/{fontstack}/{range}.pbf

如果使用在线的字体服务地址,则需要加上access_token,只设置mapboxgl.access_token无效。如下:

https://api.mapbox.com/fonts/v1/dahong/{fontstack}/{range}.pbf?access_token=YOUR_MAPBOX_ACCESS_TOKEN

dahong是我的在mapbox官网上的用户名(username)

本地字体设置

在样式文件中设置后,地图中的并没有生效,查看控制台也确实请求到了字体(但不多)。我们发现地图上的字母、数字已经变成了自定义字体,但汉字没有。

mapboxgl对CJK和部分东亚的字体做了限制。他们认为这些地方的字体文件太大,加载耗时,默认使用“本地”字体。就是使用电脑本身或者手机本身的字体,就不用再去请求了。为了避免这种情况,我们需要在初始化map对象时,设置 localIdeographFontFamily 属性为空字符串""。不使用本地字体,就用自定义字体!

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自定义 Mapbox 的散点图标,需要按照以下步骤: 1.准备图标文件 首先,需要准备散点图标的图像文件。可以使用任何常见的图像格式,例如 PNG、SVG、JPG 等。确保图像文件不透明,并且大小不超过 512 x 512 像素。 2.将图标上传到 Mapbox 登录 Mapbox 网站,进入“样式”页面。然后,选择要使用的样式并进入编辑模式。在左侧菜单中,选择“图标”选项卡,然后单击“添加图标”按钮。接着,选择要上传的图像文件并指定图标 ID。注意,图标 ID 必须是唯一的,并且只能包含字母、数字和下划线。 3.在地图上使用自定义图标 现在,可以在地图上使用自定义图标。可以使用 Mapbox GL JS 或 Mapbox Android SDK 等 Mapbox SDK 来实现。 在 Mapbox GL JS 中,可以使用以下代码来设置散点图标的样式: ``` map.addLayer({ id: 'points', type: 'symbol', source: { type: 'geojson', data: { type: 'FeatureCollection', features: [{ type: 'Feature', geometry: { type: 'Point', coordinates: [longitude, latitude] } }] } }, layout: { 'icon-image': 'icon-id', 'icon-size': 0.5 } }); ``` 其中,'icon-image' 属性指定要使用的图标 ID,'icon-size' 属性指定图标大小。 在 Mapbox Android SDK 中,可以使用以下代码来设置散点图标的样式: ``` mapboxMap.addMarker(new MarkerOptions() .position(new LatLng(latitude, longitude)) .icon(IconFactory.getInstance(context).fromResource(R.drawable.icon_id)) .title("Marker Title")); ``` 其中,'R.drawable.icon_id' 指定要使用的图标资源 ID。 以上是自定义 Mapbox 散点图标的基本步骤。如果需要更高级的样式控制,可以参考 Mapbox 官方文档或搜索相关教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值